###

Fast Octave Filter Banks

Let's now apply the above technique to the design of an octave filter
bank.^{11.19}At first sight, this appears to be a natural fit, because it is immediately easy to partition a power of 2 (typical for the FFT size

`N`) into octaves, each having a width in bins that is a power of 2. For example, when

`N == 8`, we have the following stack of frequency-response vectors for the rectangular-window, no-zero-padding, complex-signal case:

H = [ ... 0 0 0 0 1 1 1 1 ; ... 0 0 1 1 0 0 0 0 ; ... 0 1 0 0 0 0 0 0 ; ... 1 0 0 0 0 0 0 0 ];Figure 10.31 depicts the resulting filter bank schematically in the frequency domain.

^{11.20}Thus,

`H(1,:)`is the frequency-response for the top (first) octave,

`H(2,:)`is the frequency-response for the next-to-top (second) octave,

`H(3,:)`is the next octave down, and

`H(4,:)`is the ``remainder'' of the spectrum. (In every octave filter bank, there is a final low-frequency band.

A schematic of the filter-bank implementation using FFTs is shown in Fig.10.30. The division by

`N`called for by

`ifft(N)`is often spread out among the

`ifft`butterfly stages as divisions by 2 (one-bit right-shifts in fixed-point arithmetic) after each of them. For conservation of dynamic range, half of the right-shifts can be spread out among every other forward-FFT butterfly stage [28] as well. The simple spectral partitioning of Fig.10.31 is appropriate for

*complex*signals--those for which the spectrum is regarded as spanning 0 Hz to the sampling rate. For real signals, we need a spectral partition more like that in Fig.10.32. Unfortunately, the number of spectral samples in Fig.10.32 is 14--not a power of 2. (The previous length 8 complex case maps to length 14 real case because the dc and Nyquist-limit samples do not have complex-conjugate counterparts.) Discarding the sample at the Nyquist limit--number 8 in Fig.10.32--does not help, since that gives 13 samples--still not a power of 2. In summary, there is no obvious way to octave-partition the spectral samples of a real signal while maintaining the power-of-2 condition for each band and symmetrically partitioning positive and negative frequencies. A real signal can of course be converted to its corresponding ``analytic signal'' by filtering out the negative-frequency components. This is normally done by designing a

*Hilbert transform filter*[133,224]. However, such filters are large-order FIR filters, exactly like we are trying to design! If we design our filter bank properly, we can use

*it*to zero the negative-frequency components.

**Next Section:**

Spectral Rotation of Real Signals

**Previous Section:**

Improving the Channel Filters