Also known as: IIR, infinite impulse response filter, recursive filter
An IIR (infinite impulse response) filter computes each output from both recent inputs and past outputs — it has feedback.1 That recursion lets a handful of coefficients produce a very sharp frequency response, so an IIR can match an FIR filter’s selectivity at a fraction of the arithmetic — at the cost of nonlinear phase and a genuine need to watch stability, since the same feedback that sharpens the response can also make it oscillate.
How it works
The defining recurrence mixes feed-forward and feedback terms:
y[n] = Σ bₖ·x[n−k] − Σ aₖ·y[n−k]. Because a past output re-enters the calculation, the
impulse response never truly ends — hence infinite impulse response. The behaviour is
easiest to reason about in terms of poles and zeros in the z-plane: the feed-forward b
coefficients place zeros (frequencies pushed toward null), and the feedback a
coefficients place poles (frequencies boosted, producing sharp resonances). Selectivity
that would need dozens of FIR taps can come from a single pole pair sitting just inside the
unit circle.
Two consequences follow directly from the poles:
- Stability is not automatic. Every pole must lie strictly inside the unit circle. Push one outside — through a design error or fixed-point coefficient rounding — and the output grows without bound. Unlike a FIR, an IIR can be unstable, so implementations must be designed and quantised with care.
- Phase is nonlinear. Different frequencies are delayed by different amounts, which distorts pulse shapes. For audio and control loops this is harmless; for pulse-shaped digital symbols it can smear the constellation, which is why demodulators usually reach for a linear-phase FIR instead.
Variants: biquads and classic responses
Real IIR filters are almost never built as one high-order recursion — coefficient sensitivity would make them fragile. Instead they are factored into a cascade of biquads: second-order sections, each with two poles and two zeros. Cascading biquads keeps every section numerically well-behaved and lets each be tuned independently. The pole/zero pattern is chosen from a standard family — Butterworth (maximally flat passband), Chebyshev (steeper roll-off in exchange for passband or stop-band ripple), or elliptic (steepest transition for a given order) — usually derived from a proven analog prototype and mapped to the digital domain by the bilinear transform.
In practice
IIR designs shine in narrowband, low-latency tasks where efficiency matters more than phase linearity: DC-blocking a stream, notching a tone, smoothing an envelope, and the loop filters buried inside an AGC, a PLL, or a timing-recovery loop — where a simple one-pole integrator or a biquad does the averaging with almost no computation. Where a flat group delay is required, the job goes to a FIR instead; the two filter families are complementary tools, not rivals.
Relevance to SDR
GopherTrunk uses IIR structures for exactly these narrowband, phase-tolerant jobs — DC removal, envelope and error smoothing, and the recursive loop filters inside its AGC and synchronisation loops — while leaving the selective, phase-critical channel and pulse-shaping filtering to linear-phase FIRs. Knowing which family fits which job is a core DSP judgement in any SDR decode chain.
Sources
-
Infinite impulse response — Wikipedia, on the recursive, feedback-based filter, poles and zeros, and stability trade-offs. ↩