0% found this document useful (0 votes)
126 views26 pages

Overlap-Save Method: Block Convolution

The document describes the overlap-save method for block convolution. The input signal is split into blocks of length N. Each block is zero-padded and circularly convolved with the impulse response of length P. Only the middle L=N-(P-1) samples match the linear convolution, so the first and last P-1 samples are discarded. Adjacent blocks overlap by P-1 samples to reconstruct the full output signal.

Uploaded by

ebbys89
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
126 views26 pages

Overlap-Save Method: Block Convolution

The document describes the overlap-save method for block convolution. The input signal is split into blocks of length N. Each block is zero-padded and circularly convolved with the impulse response of length P. Only the middle L=N-(P-1) samples match the linear convolution, so the first and last P-1 samples are discarded. Adjacent blocks overlap by P-1 samples to reconstruct the full output signal.

Uploaded by

ebbys89
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 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

You might also like