DSPRelated.com

Polyphase Filter

Category: Sampling-multirate | Also known as: polyphase decomposition

A polyphase filter refers to the multirate filter structure obtained by decomposing a prototype FIR filter (or, less commonly, an IIR filter) into M parallel subfilters, each operating at 1/M of the original sample rate. The decomposition exploits the redundancy in multirate processing to reduce computation and simplify the implementation of decimators, interpolators, and filterbanks.

In practice

In decimation-by-M, a naive approach applies a full-rate lowpass FIR before downsampling, computing N taps on every input sample even though only 1 in M output samples is kept. Polyphase decomposition reorders the computation so that only the relevant phase of the filter is evaluated per output sample, with each subfilter operating on the low-rate data stream, reducing the arithmetic by approximately a factor of M. For a 128-tap decimation-by-8 filter, this reduces multiply-accumulate operations from roughly 128 per input sample to approximately 16 per output sample (exact counts depend on implementation details and any coefficient padding). The blog post "FIR sideways (interpolator polyphase decomposition)" gives an intuitive walkthrough of how the coefficients are redistributed across branches.

For interpolation-by-L, the roles reverse: each polyphase branch computes one of the L output phases at the low input rate, and a commutator routes outputs to reconstruct the high-rate stream. No multiplications are wasted on samples that would otherwise be zero-stuffed. This structure maps naturally onto DSPs and microcontrollers with hardware MAC units, and the blog post "Polyphase filter / Farrows interpolation" covers how polyphase ideas extend to fractional-rate conversion using the Farrow structure.

In filterbank applications, M polyphase branches feed an M-point IDFT (synthesis) or DFT (analysis) to build efficient multirate channelizers. This is the basis of the polyphase DFT filterbank described in "Polyphase Filters and Filterbanks," widely used in software-defined radio and audio processing. Hardware implementations on resource-constrained targets can time-multiplex a single multiplier across all branches, as discussed in "Shared-multiplier polyphase FIR filter," trading latency for logic area.

A common pitfall is misaligning the subfilter coefficient assignment. One standard convention distributes the prototype filter coefficients h[n] as h_k[m] = h[mM + k] for branch k, though different texts use reversed or offset indexing depending on whether the structure is written for decimation, interpolation, or filterbank form; getting the index mapping wrong produces subtle aliasing or imaging that is hard to diagnose from the output alone. Another issue is that the prototype filter must be designed for the full, high-rate bandwidth before decomposition; polyphase rearrangement changes implementation efficiency but does not change the frequency response of the composite filter.

Discussed on DSPRelated

Frequently asked

Does a polyphase filter change the frequency response compared to the original prototype filter?
No. Polyphase decomposition is a mathematically equivalent rearrangement of the prototype filter. The overall frequency response of the reconstructed output is identical to what the prototype would have produced. The benefit is purely computational and architectural.
How are prototype filter coefficients distributed across polyphase branches?
For a rate-change factor R (M for decimation, L for interpolation), one standard convention assigns branch k every R-th coefficient starting at index k: h_k[m] = h[mR + k], for k = 0, 1, ..., R-1. Note that different references use reversed or offset indexing depending on the application context (decimation, interpolation, or filterbank), so it is important to verify the convention used in any specific derivation. If the prototype has N taps, each branch has ceil(N/R) taps. Padding the prototype length to a multiple of R with zeros simplifies implementation.
When does polyphase decomposition actually save computation?
In decimation-by-M, each output sample requires only N/M multiplications instead of N, giving an approximate M-fold reduction. In interpolation-by-L, the saving is similar because branches run at the low rate and zero-valued input samples are never explicitly multiplied. The saving is real only when the subfilters are clocked at the decimated rate; running all branches at the high rate recovers no benefit.
Can polyphase decomposition be applied to IIR filters?
Yes, though it is much less common. IIR polyphase decomposition is algebraically possible but results in branches with feedback that must exchange state, complicating parallelism. In practice, polyphase decomposition is almost exclusively applied to FIR filters in embedded and DSP work.
What is a polyphase filterbank, and how does it relate to a plain polyphase filter?
A polyphase filterbank combines M polyphase branches with an M-point DFT (analysis bank) or IDFT (synthesis bank) to simultaneously extract or reconstruct M frequency channels at 1/M the input rate. Each channel effectively sees the prototype lowpass response shifted to a different center frequency. The 'Polyphase Filters and Filterbanks' post on EmbeddedRelated covers this construction in detail. The per-channel computation cost is O(N/M + log2(M)) per output sample, far lower than running M separate bandpass filters.

Differentiators vs similar concepts

A polyphase filter is often confused with a plain multirate FIR filter or a filterbank. A multirate FIR simply refers to a filter used in a rate-changing context; polyphase is a specific structural decomposition of that filter into parallel branches. A filterbank is a higher-level construct that uses a polyphase filter stage together with a transform (typically a DFT) to produce multiple frequency-channelized outputs simultaneously. Polyphase decomposition is the building block inside an efficient filterbank, not the filterbank itself. The term is also sometimes confused with polyphase power systems (three-phase AC), which is entirely unrelated.