Block Convolution: overlap-save method Input Signal x[n]: arbitrary length Impulse response of the...
-
Upload
brook-owen -
Category
Documents
-
view
220 -
download
0
Transcript of Block Convolution: overlap-save method Input Signal x[n]: arbitrary length Impulse response of the...
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)
CIRCULARCONVOLUTION
LINEAR CONVOLUTION
+ ALIASING
Signal x[n]
Lenght FFT = N
The entry signal x[n] is splitted in blocks of lenght = N...
P - 1 zero padding
The Impulse response lenght = P,so we aggregate P - 1 zeros to the signal beggining
Then when we compute the circular convolution, only
L = N - (P - 1)
samples match the linear convolution.
Lenght L
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]
x1[n]*h[n]
We compute the first segment of the output performing a circular convolution of x1[n] and h[n]
Length FFT = N
Circular convolution DOESN’T match the linear convolution
we discard P - 1 samples
It HAS “aliasing” of P - 1 samples
Signal x[n]
Signal h[n]
x1[n]*h[n]
We compute the first segment of the output performing a circular convolution of x1[n] and h[n]
Lenght FFT = N
x1[n]*h[n] = IFFT{X1[k]xH[k]}
It HAS “aliasing” of P - 1 samples
Sucesión x[n]
Sucesión h[n]
x1[n]*h[n]
We “copy” the result of the circular convolution of x1[n] and h[n] To the system output, discarding the wrong samples
Signal x[n]
Signal h[n]
x1[n]*h[n]
We “copy” the result of the circular convolution of x1[n] and h[n] to the system output, discarding the wrong samples
Signal h[n]
x1[n]*h[n]
Signal x[n]
Signal x2[n]
We process the second block x2[n] of the input x[n]... (overlapping P - 1 samples with the previous block)
(solapando P - 1 muestras con el bloque previo)
Signal h[n]
x1[n]*h[n]
Signal x[n]
We process the second block x2[n] of the input x[n]...
with the impulse response h[n]
(overlapping P - 1 samples with the previous block)
Signal h[n]
x1[n]*h[n]
Signal x[n]
We process the second block x2[n] of the input x[n]...
and we obtain the second segment x2[n]*h[n]
x2[n]*h[n]
with the impulse response h[n]
Again, we have to discard P - 1 samples of the segment, that are wrong (due to aliasing)
Signal h[n]
x1[n]*h[n]
Signal x[n]
x2[n]*h[n]
We “copy” the result of the second circular convolution of x1[n] and h[n] (discarding the wrong samples)
Signal h[n]
x1[n]*h[n]
Signal x[n]
x2[n]*h[n]
We “copy” the result of the second circular convolution of x1[n] and h[n] (discarding the wrong samples)
Signal h[n]
x1[n]*h[n]
Signal x[n]
we process the third block x2[n] of the input x[n]...
x2[n]*h[n]
(overlapping P - 1 samples with the previous block)
Signal h[n]
x1[n]*h[n]
Signal x[n]
we process the third block x2[n] of the input x[n]...
x2[n]*h[n]
(overlapping P - 1 samples with the previous block)
with the impulse response h[n]
we obtain the third segment of the output x3[n]*h[n]
Signal h[n]
x1[n]*h[n]
Signal x[n]
x2[n]*h[n]
x3[n]*h[n]
discarding the P - 1 first samples
Signal h[n]
x1[n]*h[n]
Signal x[n]
x2[n]*h[n]
x3[n]*h[n]
we process the fourth block of the input x[n]
Signal h[n]
x1[n]*h[n]
Signal x[n]
x2[n]*h[n]
x3[n]*h[n]
we process the fourth block of the input x[n]
with the impluse response h[n]
Signal h[n]
x1[n]*h[n]
Signal x[n]
x2[n]*h[n]
x3[n]*h[n]
we obtain the fourth segment of the output x4[n]*h[n]
x4[n]*h[n]
Signal h[n]
x1[n]*h[n]
Signal x[n]
x2[n]*h[n]
x3[n]*h[n]
We discard the first P - 1 samples...
x4[n]*h[n]