Overlap–save method
The overlap-save method is an efficient way to evaluate the discrete convolution between a very long signal with a finite impulse response (FIR) filter :
where h[m]=0 for m outside the region [1, M].
The concept is to compute short segments of y[n] of an arbitrary length, L, and concatenate the segments together. Consider a segment that begins at n=kL+M, for any integer, k, and define:
Then, for kL+M ≤ n ≤ kL+L+M-1, and equivalently M ≤ n-kL ≤ L+M-1, we can write:
The task is thereby reduced to computing yk[n], for M ≤ n ≤ L+M-1.
Now note that if we periodically extend xk[n] with period N ≥ L+M-1, according to:
The convolutions and are equivalent in the region M ≤ n ≤ L+M-1. So it is sufficient to compute the -point circular (or cyclic) convolution of with in the region [1,N].
The advantage is that the circular convolution can be computed very efficiently as follows, according to the circular convolution theorem:
where FFT and IFFT refer to the fast Fourier transform and inverse fast Fourier transform, respectively, evaluated over discrete points.
(Overlap-save algorithm for linear convolution) H = FFT(h,N) i = 1 while i <= Nx il = min(i+N-1,Nx) yt = IFFT( FFT(x(i:il),N) * H, N) y(i : i+N-L-1) = yt(1+L : N) i = i+L end
See also
References
- Rabiner, Lawrence R.; Gold, Bernard (1975). Theory and application of digital signal processing. Englewood Cliffs, N.J.: Prentice-Hall. pp. pp 65-67. ISBN 0-13-914101-4.
{{cite book}}
:|pages=
has extra text (help); Cite has empty unknown parameter:|coauthors=
(help)CS1 maint: multiple names: authors list (link)