Block Convolution: overlap-save method Input Signal x[n]: arbitrary length Impulse response of the...

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] There’s ALIASING! right samples: L = N - (P - 1) CIRCULAR CONVOLUTION LINEAR CONVOLUTION + ALIASING

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]

The input signal x[n] is splitted into blocks of length = L...

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

we copy itto the output...

Signal h[n]

x1[n]*h[n]

Signal x[n]

x2[n]*h[n]

x3[n]*h[n]

we copy it to the output...

Signal h[n]

x1[n]*h[n]

Signal x[n]

x2[n]*h[n]

x3[n]*h[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]

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]

Signal h[n]

x1[n]*h[n]

Signal x[n]

x2[n]*h[n]

x3[n]*h[n]

x4[n]*h[n]

…we copy it to the output

Signal h[n]

x1[n]*h[n]

Signal x[n]

x2[n]*h[n]

x3[n]*h[n]

x4[n]*h[n]

…we copy it to the output

Signal h[n]

x1[n]*h[n]

Signal x[n]

x2[n]*h[n]

x3[n]*h[n]

x4[n]*h[n] BLOCK

convolution

Signal h[n]

x1[n]*h[n]

Signal x[n]

x2[n]*h[n]

x3[n]*h[n]

x4[n]*h[n] BLOCK

convolution

LINEAR convolution

=