Está en la página 1de 26

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]

Theres 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 when 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]
x1[n]*h[n]
Length FFT = N
We compute the first segment of the output performing a
circular convolution of x1[n] and h[n]
It HAS aliasing of P - 1 samples

Circular convolution DOESNT match the linear convolution

we discard P - 1 samples

Signal x[n]
Signal h[n]
x1[n]*h[n]
Lenght FFT = N
We compute the first segment of the output performing a
circular convolution of x1[n] and h[n]
It HAS aliasing of P - 1 samples

x1[n]*h[n] = IFFT{X1[k]xH[k]}

Sucesin x[n]
Sucesin 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 x[n]
Signal h[n]

Signal x2[n]

x1[n]*h[n]

We process the second block x2[n] of the input x[n]...


(overlapping P - 1 samples with the previous block)

Signal x[n]
Signal h[n]
x1[n]*h[n]

We process the second block x2[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]
x1[n]*h[n]
x2[n]*h[n]
We process the second block x2[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 x2[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]
x1[n]*h[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 x[n]
Signal h[n]
x1[n]*h[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 x[n]
Signal h[n]
x1[n]*h[n]
x2[n]*h[n]
we process the third block x2[n] of the input x[n]...
(overlapping P - 1 samples with the previous block)

Signal x[n]
Signal h[n]
x1[n]*h[n]
x2[n]*h[n]
we process the third block x2[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]
x1[n]*h[n]
x2[n]*h[n]
x3[n]*h[n]
we obtain the third segment of the output x3[n]*h[n]

discarding the P - 1 first samples

Signal x[n]
Signal h[n]
x1[n]*h[n]
x2[n]*h[n]
x3[n]*h[n]
we copy it
to the output...

Signal x[n]
Signal h[n]
x1[n]*h[n]
x2[n]*h[n]
x3[n]*h[n]
we copy it to
the output...

Signal x[n]
Signal h[n]
x1[n]*h[n]
x2[n]*h[n]
x3[n]*h[n]
we process the fourth block of the input x[n]

Signal x[n]
Signal h[n]
x1[n]*h[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 x[n]
Signal h[n]
x1[n]*h[n]
x2[n]*h[n]
x3[n]*h[n]
x4[n]*h[n]

we obtain the fourth segment of the output x4[n]*h[n]

Signal x[n]
Signal h[n]
x1[n]*h[n]
x2[n]*h[n]
x3[n]*h[n]
x4[n]*h[n]

We discard the first P - 1 samples...

Signal x[n]
Signal h[n]
x1[n]*h[n]
x2[n]*h[n]
x3[n]*h[n]
x4[n]*h[n]

we copy it
to the output

Signal x[n]
Signal h[n]
x1[n]*h[n]
x2[n]*h[n]
x3[n]*h[n]
x4[n]*h[n]

we copy it
to the output

Signal x[n]
Signal h[n]
x1[n]*h[n]
x2[n]*h[n]
x3[n]*h[n]
x4[n]*h[n]
BLOCK
convolution

Signal x[n]
Signal h[n]
x1[n]*h[n]
x2[n]*h[n]
x3[n]*h[n]
x4[n]*h[n]
BLOCK
convolution
LINEAR
convolution

También podría gustarte