The analysis filter bank can be implemented efficiently using the polyphase structure. For
more details on the analysis filter bank, see Analysis Filter Bank.

To derive the polyphase structure, start with the transfer function of the prototype
lowpass filter:

*N*+1 is the length of the prototype filter.

You can rearrange this equation as follows:

*M* is
the number of polyphase components.

You can write this equation as:

*E*_{0}(z^{M}), *E*_{1}(z^{M}),
..., *E*_{M-1}(z^{M}) are
polyphase components of the prototype lowpass filter, *H*_{0}(z).

The other filters in the filter bank, *H*_{k}(z),
where *k* = 1, ..., *M*-1, are modulated
versions of this prototype filter.

You can write the transfer function of the *k*th modulated bandpass filter as $${H}_{k}(z)={H}_{0}(z{e}^{-j{w}_{k}})$$.

Replacing *z* with
*ze*^{-jwk},

*N*+1 is the length of the *k*th
filter.

In polyphase form, the equation is as follows:

For all *M* channels in the filter bank, the transfer function,
*H*(z), is given by:

**Maximally decimated channelizer (****D**** =
****M****)**

When **D**** =
****M**, the
channelizer is known as the maximally decimated channelizer or critically sampled
channelizer.

Here is the multirate noble identity for decimation, assuming that *D* =
*M*.

For illustration, consider the first branch of the filter bank
that contains the lowpass filter.

Replace *H*_{0}(z) with
its polyphase representation.

After applying the noble identity for decimation, you can replace the delays and the
decimation factor with a commutator switch. The switch starts on the first branch and
moves in the counter clockwise direction as shown in the following diagram.

For all *M* channels in the filter bank, the transfer function,
*H*(z), is given by:

The matrix on the left is a discrete Fourier transform (DFT) matrix. With the DFT matrix, the
efficient implementation of the lowpass prototype based filter bank looks like the
following.

The switch starts on the first branch 0, delivers one sample at a time to each branch,
and progresses in the counter clockwise direction through the branches 0,
*M*−1, *M*−2, all the way up to branch 1. When the
first set of *M* input samples are delivered to the
*M* branches of the polyphase structure, the channelizer computes
the first set of output values. Hence, the sample rate at the output of the maximally
decimated channelizer is *fs*/*M*.

When the next set of input data samples are available, the switch starts at branch 0,
and delivers these samples one at a time in the counter clock wise direction. Every time
the polyphase structure receives a new set of *M* input samples, the
channelizer computes a new set of output values.

**Non-maximally decimated channelizer
(****D**** < ****M****)**

When **D**** <
****M**, the
channelizer is known as the non-maximally decimated channelizer or oversampled
channelizer. In this configuration, the output sample rate is different from the channel
spacing. In addition to that, the non-maximally decimated channelizers offer increased
design freedom, but at the expense of increasing computational cost.

The number of frequency bands, *M* = *RD*, where
*R* = 1, 2,…, *M*, is known as the oversampling
ratio, and *D* is the decimation factor.

When *R* = 1, *M* equals *D*, and
the decimator is known as the maximally decimated channelizer. The commutator switch in
the filter bank starts at branch 0 and delivers one sample at a time to each branch in
the counter clockwise direction. Once all *M* branches have a data
sample, the filter bank computes the output data. For more details, see **Maximally decimated channelizer**.

When *R* > 1, the switch starts at the branch
(*M*/*R*) − 1, loads *D* samples,
delivers one sample at a time to each branch in the counter clockwise direction, and
progresses up the stack to branch 0. When a new set of *D* input
samples come in, these samples are delivered to the first set of
*M*/*R* addresses. The formal contents of these
addresses are shifted to the next set of *M*/*R*
addresses, and this process of data shift continues every time there is a new set of
*D* input samples. All the samples undergo a serpentine
shift.

For every *D* input samples that are fed to the polyphase structure,
the channelizer outputs *M* samples,
*y*_{0}(m),
*y*_{1}(m), … ,
*y*_{M-1}(m). This process increases the
output sample rate from
*f*_{s}/*M* in the case of
maximally decimated channelizer, to
*R**f*_{s}/*M*
in the case of non-maximally decimated channelizer.

For more details, see [2].

After each *D*-point data sequence is delivered to the partitioned
*M*-stage polyphase filter, the outputs of the *M*
stages are computed and conditioned for delivery to the *M*-point FFT.
The data shifting through the filter introduces frequency-dependent phase shift. To
correct for this phase shift and alias all bands to DC, a circular shift buffer is
inserted after the polyphase filters and before the *M*-point FFT.

With the commutator switch followed by *M*-stage polyphase filter,
circular shift buffer, and a DFT matrix, the efficient implementation of the lowpass
prototype-based filter bank looks like the following.