Improving the Channel Filters

Recall that each FFT bin can be viewed as a sample from a bandpass
filter whose frequency response is a frequency-shift of the FFT-window
Fourier transform (§9.3). Therefore, the frequency
response of a channel filter obtained by summing `Nk` adjacent FFT
bins is given by the sum of `Nk` window transforms, one for each FFT
bin in the sum. As a result, the stop-band of the channel-filter
frequency response is a sum of `Nk` window side lobes, and by
controlling window side-lobe level, we may control the stop-band gain
of the channel filters.

The *transition width* from pass-band to stop-band, on the other
hand, is given by the main-lobe width of the window transform
(§5.5.1). In the previous subsection, by zero-padding
the band (line `(1)` above), we implicitly assumed a transition
width of one bin. Only the length `N` rectangular window can be
reasonably said to have a one-bin transition from pass-band to
stop-band. Since the first side lobe of a rectangular window transform
is only about 13 dB below the main lobe, the rectangular window gives
poor stop-band performance, as illustrated in
Fig.10.33. Moreover, we often need FFT data
windows to be shorter than the FFT size `N` (*i.e.*, we often need
zero-padding in the time domain) so that the frame spectrum will be
oversampled, enabling various spectral processing such as linear
filtering (Chapter 8).

One might wonder how the length `N` rectangular window can be all that
bad when it gives the perfect reconstruction property, as demonstrated
in the previous subsection. The answer is that there is a lot of
aliasing in the channel signals, when downsampled, but this aliasing
is exactly canceled in the reconstruction, provided the channel
signals were not modified in any way.

Going back to §10.7.3, we need to replace the zero-padded band `(1)`
by a proper filtering operation in the frequency domain (a ``spectral
window''):

BandK2 = Hk .* X; x(k,:) = ifft(BandK2); % full rate BandK2a = alias(BandK2,Nk); xd{k} = ifft(BandK2a); % crit sampwhere the channel filter frequency response

Hideal = [z1,ones(1,Nk),z2]; Hk = cconvr(W,Hideal); % circ. conv.where

function [Y] = cconvr(W,X) wc=fft(W); xc=fft(X); yc = wc .* xc; Y = real(ifft(yc));Note that in this more practical case, the perfect reconstruction property no longer holds, since the operation

BandK2a = alias(Hk .* X, Nk);is not exactly invertible in general.

The band filters `Hk` can be said to have been designed by the
*window method* for FIR filter design [224].
(See functions `fir1` and `fir2` in Octave and/or the Matlab
Signal Processing Toolbox.)

[How to cite this work] [Order a printed hardcopy] [Comment on this page via email]

Copyright ©

Center for Computer Research in Music and Acoustics (CCRMA), Stanford University