###

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

`Hk`may be prepared in advance as the appropriate weighted sum of FFT-window transforms:

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

`z1`and

`z2`are the same zero vectors defined in §10.7.3, and

`cconvr(W,H)`denotes the

*circular convolution*of two real vectors having the same length [264]:

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.

^{11.18}However, we may approach perfect reconstruction arbitrarily closely by only aliasing stop-band intervals onto the pass-band, and by increasing the stop-band attenuation of

`Hk`as desired. In contrast to the PR case, we do not rely on aliasing cancellation, which is valuable when the channel signals are to be modified.

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.)

**Next Section:**

Fast Octave Filter Banks

**Previous Section:**

Inverse Transforming STFT Bin Groups