Lecture 44: Tutorial On Two-Band Filter Bank
Lecture 44: Tutorial On Two-Band Filter Bank
Lecture 44: Tutorial On Two-Band Filter Bank
H0 (Z) is a low pass filter with a cut off frequency π2 and H1 (Z) is a high pass filter with a cut
off frequency π2 . Analysis section analyzes or breaks down the input in two components.
G0 (Z) is a low pass filter with a cut off frequency π2 and G1 (Z) is a high pass filter with a cut
off frequency π2 . Synthesis section re-synthesize output from the inputs.
It is impossible situation as we can never reach ideal low pass or high pass filter. Even so,
it is possible to build perfect reconstruction structure. For e.g., if we take Haar 2-band filter
bank, we have set of filters H0 , H1 , G0 and G1 all of them have impulse response of length 2
which can create perfect reconstruction situation i.e., output Y0 is same as input X0 except for
a constant multiplier and a shift.
44 - 1
H1 (Z) = (−1 + Z −1 ) (2)
(1 + Z −1 )
G0 (Z) = (3)
2
(1 − Z −1 )
G1 (Z) = (4)
2
1
The factor of 2 can either be on the analysis or synthesis side.
Let us take x[n] be the input to this Haar 2-band filter bank.
x[n] = 7 5 −4 6 3 8
↑
0
Analysis side:
x[n] denotes time domain, X(Z) denotes complex frequency domain.
Now, H0 (Z) = (1 + Z −1 ) , therefore corresponding impulse response h0 (n) is
h0 (n) = 1 1
↑
0
Therefore y1 = x ∗ h0 ,
y1 (n) = 7 5 − 4 6 3 8 ∗ 1 1
↑ ↑
0 0
= 7 12 1 2 9 11 8 = x ∗ h0
↑
0
h1 (n) = −1 1
↑
0
Therefore,
x ∗ h1 = −7 2 9 − 10 3 − 5 8
↑
0
Y3 (n) = 7 1 9 8
↑
0
44 - 2
Y4 (n) = −7 9 3 8
↑
0
Synthesis side:
After Upsampling by 2 :
Y5 (n) = 7 0 1 0 9 0 8
↑
0
Y6 (n) = −7 0 9 0 3 0 8
↑
0
(1 + Z −1 )
G0 (Z) = (5)
2
7 7 1 1 9 9 8 8
Y7 (n) =
2 2 2 2 2 2 2 2
↑
0
(1 − Z −1 )
G1 (Z) = (6)
2
y6 [n] − y6 [n − 1]
y8 [n] = (7)
2
44 - 3
7 7 9 9 3 3 8 8
Y8 (n) = − − − −
2 2 2 2 2 2 2 2
↑
0
Now, Y0 = Y7 + Y8
Y0 (n) = 0 7 5 − 4 6 3 8 0
↑
0
We can observe that the output sequence is same as input sequence shifted by one sample. We
notice that y0 [n] = x[n − 1]. The factor of 12 has taken care of the scaling. Delay has occurred
on account of causality need. We want filter to be casual. Causality is needed because if we do
not allow some delay i.e., time for the processing then we could not have real time processing.
Causality is therefore required for a real time processing. We could have done without the
delay if we do Non-Casual filtering in at least one of analysis or synthesis side.
x̃[n] = . . . 3 8 7 5 − 4 6 3 8 7 5 − 4 . . .
↑
0
Y1 = . . . 15 12 1 2 9 11 15 . . .
↑
0
Y2 = . . . 1 2 9 − 10 3 − 5 1 . . .
↑
0
Now downsampling:
Y3 = . . . 15 1 9 15 . . .
↑
0
Y4 = . . . 1 9 3 1 . . .
↑
0
Y5 = . . . 15 0 1 0 9 0 15 . . .
↑
0
Y6 = . . . 1 0 9 0 3 0 1 . . .
↑
0
44 - 4
Period of Y5 and Y6 is 6.
15 15 1 1 9 9 15
Y7 (n) = . . . ...
2 2 2 2 2 2 2
1 −1 9 9 3 3 1
Y8 (n) = . . . − − ...
2 2 2 2 2 2 2
Y0 = . . . 8 7 5 − 4 6 3 8 . . .
↑
0
As expected output is delayed by one sample and is same as input. It it periodically repeated
with a period of 6.
44 - 5