Also known as: PFB, polyphase channelizer, polyphase decomposition, DFT filter bank
A polyphase filter bank (PFB) is a way of factoring a single FIR filter into a set of parallel sub-filters — its polyphase branches — so that decimation, interpolation, and channelization can be performed at the low sample rate instead of the high one.1 The rearrangement is exact (it computes the same output as the direct filter) but moves every multiply to the slow side of the resampler, cutting arithmetic by roughly the resampling factor and, when paired with a DFT/FFT, producing many frequency channels in one shared pass.
How it works
Take a length-NM FIR prototype filter and decimate its output by M. Naively you would compute every output sample of the filter and then throw away M−1 of every M — most of the multiplies are wasted. Polyphase decomposition splits the tap set into M interleaved subsequences, the branches E₀(z), E₁(z), … E_{M-1}(z), where branch k holds taps k, k+M, k+2M, …. The Noble identities let you push the decimator before each branch filter, so every branch runs at the output rate and consumes one input sample per branch through an input commutator that hands successive samples to successive branches.
The payoff is twofold:
- Efficiency. Each input sample touches exactly one branch, and each branch runs at 1/M of the input rate. The total multiply-rate is that of the full filter evaluated once at the low rate — an ~M× saving over filter-then-decimate.
- Channelization for free. If, instead of summing the branch outputs, you feed them into an M-point DFT, each DFT output bin is a critically- or over-sampled channel centred on a different multiple of the channel spacing. One shared prototype filter plus one FFT then yields M down-converted, filtered channels simultaneously — the polyphase channelizer.
Interpolation is the transpose: the DFT (or IDFT) spreads a symbol across the branches, an output commutator interleaves branch outputs, and the prototype filter’s images are suppressed at the high rate. The same machinery, run with a non-integer commutator step, becomes an arbitrary resampler.
Variants
- PFB channelizer — the DFT-coupled bank above, the workhorse of wideband SDR receivers that must split one capture into dozens or hundreds of channels.
- Oversampled / M:2M banks — advance the commutator by M/2 so adjacent channels overlap, avoiding scalloping loss at channel edges for signals that straddle a boundary.
- Polyphase arbitrary resampler — a bank of branches indexed by a fractional accumulator gives rational or near-continuous rate change, a common alternative to a CIC-plus-FIR chain.
Relevance to SDR
Wideband trunking receivers routinely digitize several megahertz and must peel out many 12.5 kHz or 25 kHz voice/control channels at once; a PFB channelizer does this far more cheaply than an independent digital down-converter per channel. The structure appears throughout radio astronomy correlators, LTE/5G base-station front-ends, and general-purpose SDR frameworks (GNU Radio’s PFB blocks, for example). GopherTrunk’s tuning path uses discrete down-converters and decimating FIR/CIC stages rather than a full DFT channelizer, but the polyphase idea — do the filtering at the decimated rate — is the same efficiency principle its multirate decimation stages rely on.
Sources
-
Polyphase matrix — Wikipedia, on polyphase decomposition of filters for efficient multirate processing, and Filter bank for the DFT-coupled channelizer. ↩