Jump to content

Overlap–save method

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Bob K (talk | contribs) at 14:41, 28 April 2008 (Created page with 'The '''overlap-save method''' is an efficient way to evaluate the discrete convolution between a very long signal <math>x[n]</math> with a [[finite impulse resp...'). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)

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)