Block Convolution overlapsave method Input Signal xn arbitrary
Block Convolution: overlap-save method § Input Signal x[n]: arbitrary length § Impulse response of the filter h[n]: lenght P § Block Size: N we take N samples of x[n] § There’s ALIASING! right samples: L = N - (P - 1) CIRCULAR CONVOLUTION LINEAR CONVOLUTION + ALIASING
Signal x[n] The input signal x[n] is splitted into blocks of length = L. . .
Signal x[n] P - 1 zero padding Lenght L Lenght FFT = N The entry signal x[n] is splitted in blocks of lenght = N. . . The Impulse response lenght = P, so we aggregate P - 1 zeros to the signal beggining Then we compute the circular convolution, only L = N - (P - 1) samples match the linear convolution.
Signal x[n] Signal h[n] Lenght P N - P zero padding Lenght FFT = N To complete the lenght of the N FFT, we aggregate N-P zeros to the impulse response h[n] (lenght P). . .
Signal x[n] Signal h[n] x 1[n]*h[n] Length FFT = N We compute the first segment of the output performing a circular convolution of x 1[n] and h[n] It HAS “aliasing” of P - 1 samples Circular convolution DOESN’T match the linear convolution we discard P - 1 samples
Signal x[n] Signal h[n] x 1[n]*h[n] Lenght FFT = N We compute the first segment of the output performing a circular convolution of x 1[n] and h[n] It HAS “aliasing” of P - 1 samples x 1[n]*h[n] = IFFT{X 1[k]x. H[k]}
Sucesión x[n] Sucesión h[n] x 1[n]*h[n] We “copy” the result of the circular convolution of x 1[n] and h[n] To the system output, discarding the wrong samples
Signal x[n] Signal h[n] x 1[n]*h[n] We “copy” the result of the circular convolution of x 1[n] and h[n] to the system output, discarding the wrong samples
Signal x[n] Signal h[n] Signal x 2[n] x 1[n]*h[n] We process the second block x 2[n] of the input x[n]. . . (overlapping P - 1 samples with the previous block)
Signal x[n] Signal h[n] x 1[n]*h[n] We process the second block x 2[n] of the input x[n]. . . (solapando P - 1 muestras con el bloque previo) with the impulse response h[n]
Signal x[n] Signal h[n] x 1[n]*h[n] x 2[n]*h[n] We process the second block x 2[n] of the input x[n]. . . (overlapping P - 1 samples with the previous block) with the impulse response h[n] and we obtain the second segment x 2[n]*h[n] Again, we have to discard P - 1 samples of the segment, that are wrong (due to aliasing)
Signal x[n] Signal h[n] x 1[n]*h[n] x 2[n]*h[n] We “copy” the result of the second circular convolution of x 1[n] and h[n] (discarding the wrong samples)
Signal x[n] Signal h[n] x 1[n]*h[n] x 2[n]*h[n] We “copy” the result of the second circular convolution of x 1[n] and h[n] (discarding the wrong samples)
Signal x[n] Signal h[n] x 1[n]*h[n] x 2[n]*h[n] we process the third block x 2[n] of the input x[n]. . . (overlapping P - 1 samples with the previous block)
Signal x[n] Signal h[n] x 1[n]*h[n] x 2[n]*h[n] we process the third block x 2[n] of the input x[n]. . . (overlapping P - 1 samples with the previous block) with the impulse response h[n]
Signal x[n] Signal h[n] x 1[n]*h[n] x 2[n]*h[n] x 3[n]*h[n] we obtain the third segment of the output x 3[n]*h[n] discarding the P - 1 first samples
Signal x[n] Signal h[n] x 1[n]*h[n] x 2[n]*h[n] x 3[n]*h[n] we copy it to the output. . .
Signal x[n] Signal h[n] x 1[n]*h[n] x 2[n]*h[n] x 3[n]*h[n] we copy it to the output. . .
Signal x[n] Signal h[n] x 1[n]*h[n] x 2[n]*h[n] x 3[n]*h[n] we process the fourth block of the input x[n]
Signal x[n] Signal h[n] x 1[n]*h[n] x 2[n]*h[n] x 3[n]*h[n] we process the fourth block of the input x[n] with the impluse response h[n]
Signal x[n] Signal h[n] x 1[n]*h[n] x 2[n]*h[n] x 3[n]*h[n] x 4[n]*h[n] we obtain the fourth segment of the output x 4[n]*h[n]
Signal x[n] Signal h[n] x 1[n]*h[n] x 2[n]*h[n] x 3[n]*h[n] x 4[n]*h[n] We discard the first P - 1 samples. . .
Signal x[n] Signal h[n] x 1[n]*h[n] x 2[n]*h[n] x 3[n]*h[n] x 4[n]*h[n] …we copy it to the output
Signal x[n] Signal h[n] x 1[n]*h[n] x 2[n]*h[n] x 3[n]*h[n] x 4[n]*h[n] …we copy it to the output
Signal x[n] Signal h[n] x 1[n]*h[n] x 2[n]*h[n] x 3[n]*h[n] x 4[n]*h[n] BLOCK convolution
Signal x[n] Signal h[n] x 1[n]*h[n] x 2[n]*h[n] x 3[n]*h[n] x 4[n]*h[n] BLOCK convolution LINEAR convolution =
- Slides: 26