Analog engineers settled long ago on a few ready-made low-pass filters. The first, Butterworth, puts its poles on a half-circle. Below, its order grows from 1 to 8: watch the poles spread round the circle while the gain’s edge gets steeper.
Poles on a half-circle, the flattest gain
Butterworth filters of order N with cutoff ω_c = 1 rad/s.
N = 1: one pole at −1, the RC filter of 8.4. At 2 rad/s, twice the cutoff, the gain is −6.99 dB.
Describe this picture
Two panels for Butterworth filters of order with cutoff rad/s. The plane has the decay rate across, from −1.3 to 0.3, and the spin rate in rad/s up, from −1.3 to 1.3, on one scale both ways. A dashed half-circle of radius 1 is labelled “radius ω_c”, and the poles are crosses. The gain panel plots the gain from −60 to 5 dB against from 0.1 to 10 rad/s on a log scale, as a solid curve. After the first change of order, the previous order’s curve stays as a faint dashed line. A dotted level marks −3 dB, and a dotted vertical marks 2 rad/s. The readouts are the order and the gain at .
The clip lasts 14 s, with a blank caption while the poles move. At there is one pole at −1, the RC filter of 8.4, and the gain at 2 rad/s, twice the cutoff, is −6.99 dB. Then the poles slide round the circle, and new poles grow from the old ones. At 4.5 s, : two poles at ±135°, −12.30 dB at twice the cutoff. At 7.75 s, : four poles 45° apart, −24.10 dB, and a flatter pass band, −0.017 dB at half the cutoff. At the end, : eight poles, −48.16 dB; every curve crosses −3 dB at , and each pole adds 6 dB per octave, 20 dB per decade. After the clip a slider named “Order N” sets the order from 1 to 10, with a value like “8: −48.16 dB at twice the cutoff”. The arrow keys move it by 1, and Home and End jump to 1 and 10. At 1, 2, 4 and 8 the clip’s captions return; at the other orders the caption reads like “N = 5: −30.11 dB at 2ω_c.” The order is kept in the link, as circle.N.
Poles on a half-circle, the flattest gain
Chapter 19 built FIR filters from taps. This chapter builds IIR filters, and the usual way is surprising: borrow an analog filter and translate it into samples. IIR design by the bilinear transform (20.2) does the translating. This page is about what gets borrowed.
Analog engineers settled on a short list of designs long ago. I call each one a prototype: a ready-made analog low-pass, the best at one particular thing. There are five worth knowing, and by the end of the page you will know what each one buys and what it pays.
One note on letters first, because analog and digital frequency meet in this chapter. On this site, analog frequency is (rad/s), digital frequency is (rad/sample); Oppenheim and Schafer use the opposite letters. Everything on this page is analog, so it is all .
Start with the RC stage of Frequency response and Bode plots (8.4). With its corner at , its gain squared is . It is flat, then it falls 20 dB per decade.
That is too gentle for most jobs, so let’s ask for the same shape, only steeper. The Butterworth filter of order does exactly that:
Here is a whole number, the order of the prototype, and is its cutoff. Three things follow from the formula.
At the bottom is 2 for every , so the gain is , which is −3.01 dB. The cutoff is the −3 dB point, whatever the order.
Far above the cutoff, the 1 in the bottom no longer matters, and the gain is about . Every tenfold step in then divides the gain by , which is dB per decade. That is the straight-line rule of Anti-aliasing and practical converters (10.4), and far above the cutoff it is now exact.
Below the cutoff, is tiny, and the gain hardly moves from 1. For at half the cutoff, , and the gain is only −0.017 dB. Written as a series in , the gain squared is , so its first derivatives at are zero. No filter of order with poles only, an all-pole filter, does better, so Butterworth is called maximally flat.
Two familiar systems are Butterworth filters already. With it is the RC stage itself. With it is 8.4’s second-order system with : then , and the resonant peak is gone.
Why not put four RC stages in a row? They also fall 80 dB per decade far out. But at the corner they are 12.04 dB down instead of 3.01, and at half the corner they have already lost 3.88 dB, against Butterworth’s 0.017.
Where are the poles? Put in place of in the recipe. Its bottom becomes , which is zero when . That happens at points evenly spaced round a circle of radius , and none of them lies on the spin-rate axis.
The recipe is the gain squared, times its mirror image, so those points are shared between the two. Poles, zeros and the s-plane (9.3) showed that a causal filter is stable only with every pole on the left. So the filter takes the points on the left half of the circle:
Neighbouring poles are apart. For they sit at ±135°, and for at ±112.5° and ±157.5°. An odd order always has one pole on the real axis, at .
The picture at the top of the page draws these poles and their gain for rad/s, as the order grows from 1 to 8. Notice that every curve crosses −3 dB at the same point, 1 rad/s. Each extra pole adds about 6 dB at twice the cutoff, because one octave of is dB. For that gives 48.16 dB, almost exactly .
After the clip, set the order yourself with the slider, from 1 to 10. Try 10: the gain at twice the cutoff is −60.21 dB, while at 1 rad/s it is still −3 dB.
Four ways to spend three poles
Butterworth puts all its effort into a flat pass band. The other families spend the same poles on something else. To compare them I need one more word. If a gain swings up and down between 0 and −1 dB, I say it has 1 dB of ripple.
The Chebyshev I filter lets the pass band ripple by a set amount, here 1 dB, and in return its edge is steeper. Its poles sit on an ellipse inside Butterworth’s circle. Its gain is built from a Chebyshev polynomial, which swings evenly between −1 and 1 and then grows fast; that swing is the ripple.
The Chebyshev II filter keeps the pass band flat and lets the stop band ripple instead, up to a floor, here −40 dB. It has zeros on the spin-rate axis. By 9.3’s arrows, when the test point reaches a zero, that zero’s arrow has length 0, so the gain is exactly 0 there: a notch.
The elliptic filter ripples in both bands, with zeros on the axis too. For a given order it has the steepest edge of all. The Bessel filter is chosen for something else entirely: a delay that stays as flat as possible, not a gain. I come back to it in the next instrument.
The maths behind it · Chebyshev polynomials
The Chebyshev filters are built on Chebyshev polynomials, . They stay between ±1 on and grow faster than any other polynomial of their degree outside it. They are also the extremal polynomials behind the equiripple design of Optimal FIR design (19.3). The elliptic filter does the same with a ratio of polynomials.
To compare the families fairly I need them to share an order and a cutoff. That is less simple than it sounds.
SciPy’s butter puts its cutoff at −3 dB, cheby1 and ellip at the pass band’s edge, and cheby2 at the stop band’s edge. So the instrument slides each design along the frequency axis until it is −3 dB at 1 rad/s. Dividing every pole and zero by the same number does that without changing the curve’s shape.
I use order 3. An odd order makes every family pass 0 Hz at gain exactly 1, so the four curves start together. Below, the four families take turns.
Four ways to spend three poles
Order 3, every filter scaled to −3 dB at 1 rad/s. Ripple: 1 dB in a rippling pass band, a −40 dB floor in a rippling stop band.
Butterworth: flat, then −18.13 dB at 2 rad/s and still falling, −60.00 dB at 10.
Describe this picture
Two stacked panels for order 3, every filter scaled to −3 dB at 1 rad/s, with 1 dB of ripple in a rippling pass band and a −40 dB floor in a rippling stop band. The first, “pass band, close up”, plots the gain from −3.5 to 0.5 dB against from 0.1 to 1.2 rad/s on a log scale. The second plots the gain from −60 to 5 dB against from 0.1 to 10 rad/s, also on a log scale. The family on show is a solid curve in both panels. From the first cross-fade on, Butterworth stays as a faint dashed curve labelled “Butterworth”, and a dotted vertical marks 2 rad/s. The readouts are the family, on its own row, then the gain at 2 rad/s and at 10 rad/s.
The clip lasts 16 s and cross-fades from family to family, with a blank caption during each cross-fade. Butterworth is flat, then −18.13 dB at 2 rad/s and still falling, −60.00 dB at 10. At 5.3 s, Chebyshev I: the pass band ripples between 0 and −1 dB, and the edge is steeper, −25.13 dB at 2 rad/s and −68.48 dB at 10. At 9.3 s, Chebyshev II: a flat pass band, and a stop band that stops falling at −40 dB, with a zero on the axis at 3.48 rad/s; −20.84 dB at 2 rad/s and −42.01 dB at 10. At the end, elliptic: ripple in both bands and the steepest edge, −32.60 dB at 2 rad/s, with a zero at 2.54 rad/s, and −44.43 dB at 10. After the clip the four families are buttons in a group named “Family”. Each shows that family’s caption from the clip, and the choice is kept in the link, as gallery.f.
Notice that the families with zeros stop falling at the −40 dB floor. Out at 10 rad/s, Butterworth is at −60.00 dB and Chebyshev I at −68.48 dB, still falling. Chebyshev II and elliptic stay just under the floor, at −42.01 and −44.43 dB. The floor is the price of their zeros.
After the clip, press each family’s button to compare them yourself.
Look at the elliptic filter in the pass-band panel. It ripples between 0 and −1 dB like Chebyshev I, yet at 2 rad/s it is 7.47 dB further down. Its zeros buy that: the one at 2.54 rad/s pulls the gain down hard just past the edge. From 2.23 rad/s on, the elliptic gain never rises above −40 dB.
A steep edge rings
The gain is not the whole story. In 8.4’s section “Two delays” you met the group delay, . It is the time an envelope takes to come through. Linear-phase systems (17.3) showed that a delay that changes with frequency reshapes a pulse. So let’s look at the delay of these filters, and at their step response: the output when the input jumps from 0 to 1 and stays there.
Why should a steep edge cost anything here? A steep edge needs poles close to the spin-rate axis, near the edge. By 9.3’s arrows, the angle of a short arrow swings quickly as the test point passes its pole. So the phase bends sharply near the edge, and the group delay climbs to a peak there.
In time the same poles ring. A pole pair close to the axis has a small decay rate , so its envelope dies slowly, as in 9.3. In the words of First- and second-order systems (6.3), its damping is small. A car’s suspension tuned firm for cornering makes the same trade: it bounces for a while after a kerb.
For the order-3 filters scaled to −3 dB at 1 rad/s, the complex pole pair of the elliptic filter has decay rate −0.21 and . Butterworth’s pair has −0.50 and . The Bessel filter puts its pair much further left, at −1.05 with , and gives up steepness for it.
The step response settles when it enters a band of ±2 % around 1 for good, like the 2 % band of 9.3. The overshoot is how far above 1 it goes first, as a percentage of the final value 1. Below, Bessel, Butterworth and elliptic take a step in turn; watch how long each one rings.
A steep edge rings
Order 3, −3 dB at 1 rad/s: Bessel, Butterworth and elliptic (1 dB, −40 dB).
Three order-3 filters, all −3 dB at 1 rad/s. First Bessel.
Describe this picture
Two stacked panels for three order-3 filters, all −3 dB at 1 rad/s: Bessel, Butterworth and elliptic (1 dB, −40 dB). The first plots the group delay from 0 to 6 s against from 0 to 1 rad/s. The second plots the step response, the output from 0 to 1.2 against time from 0 to 20 s, with a lightly hatched band of ±2 % around 1 labelled “within 2 %”. Bessel is a dotted curve, Butterworth a dashed one and elliptic a solid one, each labelled at its end in both panels. A small open triangle on the time axis marks where each step enters the band for good. The readouts, for the family drawn last, are the range of the delay from 0 to 1 rad/s and the time at which the step settles within 2 %. There is no control.
The clip lasts 14 s. It starts with empty panels apart from the 2 % band, and each family then draws its delay curve and then its step. At 4 s, Bessel: its delay barely changes, 1.64 to 1.76 s, and its step settles within 2 % after 3.60 s, with 0.75 % overshoot. At 8.75 s, Butterworth: the delay bends up to 2.74 s near the cutoff (2.00 to 2.74 s), and the step overshoots 8.15 %, settling after 6.64 s. At the end, elliptic: the delay climbs to 5.30 s at the edge (2.06 to 5.30 s), and the step rings until 13.06 s.
Notice that the elliptic step is still moving long after the others have settled. Its overshoot, 7.57 %, is a little smaller than Butterworth’s 8.15 %, so the first swing is not the problem. The problem is how slowly the swings die: its envelope shrinks five times more slowly than Bessel’s.
The Bessel delay is 1.76 s at 0 rad/s and still 1.64 s at the cutoff. Everything in the pass band arrives together, so a pulse keeps its shape, which is 17.3’s straight phase, nearly. It pays at 2 rad/s, where it is only −12.00 dB down against Butterworth’s −18.13.
The maths behind it · the Gaussian shape
As grows, the Butterworth gain becomes a smooth approximation of a step, like a logistic curve that steepens. The Bessel filter’s nearly constant delay makes its impulse response close to a Gaussian. That is the shape that keeps the spread in time and in frequency smallest together, the uncertainty pair of Properties of the Fourier transform (8.2).
How many poles a spec needs
So far I picked the order. In practice the spec picks it. You know the target from Filter specifications (18.1): a pass edge, a stop edge, how much loss the pass band may have, and how much attenuation the stop band needs. The question is the smallest that meets all four.
For Butterworth the gain formula answers it directly. Put the −3 dB point at the pass edge and ask for dB at the stop edge. Then , which gives
For 10.4’s anti-alias filter, 3 dB at 20 kHz and 60 dB at 24.1 kHz, this is , so the order is 38. That is exactly 10.4’s count from the straight-line rule.
The other families have their own formulas, built on Chebyshev polynomials and elliptic functions, and I will not derive them. SciPy’s buttord, cheb1ord, cheb2ord and ellipord return the smallest order that meets a pass-band loss and a stop-band attenuation at two edges.
The running spec of 18.1 keeps the pass band between 0.95 and 1.05. These prototypes peak at gain 1, so only the bottom matters: a loss of at most dB. The stop band needs 40 dB.
Its edges, 1 and 1.5 kHz, must first be moved to analog frequencies, by a step called pre-warping that 20.2 will explain. They become 6627.4 and 10 690.9 rad/s. Then the four functions give these orders.
| Family | Running spec | 10.4’s anti-alias filter |
|---|---|---|
| Butterworth | 12 | 38 |
| Chebyshev I | 7 | 13 |
| Chebyshev II | 7 | 13 |
| Elliptic | 5 | 7 |
The anti-alias row is the striking one. Order 38 was why 10.4 sampled faster. An elliptic filter meets the same spec with 7 poles, if you can live with its ripple and its ringing.
Worked example
1. Butterworth, , rad/s. The poles are for to 3, at ±112.5° and ±157.5°. In numbers they are and .
The gain is dB. At 0.5 rad/s that is −0.0169 dB, at 1 rad/s −3.0103 dB, at 2 rad/s −24.10 dB, and at 10 rad/s −80.00 dB.
2. The gallery at 2 rad/s. At order 3, each family scaled to −3 dB at 1 rad/s, the gains at twice the cutoff are these.
| Family | Gain at 2 rad/s |
|---|---|
| Bessel | −12.00 dB |
| Butterworth | −18.13 dB |
| Chebyshev II | −20.84 dB |
| Chebyshev I | −25.13 dB |
| Elliptic | −32.60 dB |
The rows run from the gentlest edge to the steepest. Measure how much each group delay changes from 0 to 1 rad/s, and it grows in the same order.
3. Orders for a spec. For the running spec the pre-warped edges are 6627.4 and 10 690.9 rad/s, a ratio of 1.6131. With 0.4455 dB of loss and 40 dB of attenuation, the orders are 12, 7, 7 and 5.
For 10.4’s anti-alias filter they are 38, 13, 13 and 7. Ask for only 0.1 dB of pass-band loss instead of 3 dB, and they grow to 48, 16, 16 and 8.
Where you’ll meet this
Butterworth filters are the default in anti-alias filters and general smoothing, wherever a flat pass band matters more than a sharp edge. Chebyshev and elliptic filters go where the edge must be steep and some ripple is fine: channel filters in radios and the decimation filters inside audio converters. Bessel filters go where a waveform must keep its shape, as in oscilloscope inputs and pulse measurements.
The prototypes are also the starting point of most digital IIR design. IIR design by the bilinear transform (20.2) and Impulse invariance (20.3) turn them into digital filters. Frequency transformations (20.4) turns the low-pass into high-pass, band-pass and band-stop shapes. Choosing FIR or IIR (20.6) sets them against the FIR designs of chapter 19 on one spec.
Reference card
| Family | Gain | Poles and zeros | Trade |
|---|---|---|---|
| Butterworth | poles on a half-circle, radius | flattest pass band; slowest edge | |
| Chebyshev I | ripples in the pass band | poles on an ellipse | steeper; pass-band ripple; bent delay |
| Chebyshev II | ripples in the stop band | poles and zeros on the spin-rate axis | flat pass band; stop band floor |
| Elliptic | ripples in both | poles and zeros on the spin-rate axis | steepest for its order; most bent delay |
| Bessel | gentle | poles further left | nearly constant delay; clean step |
| Butterworth poles | , | apart | −3 dB at for every |
| Fall far above | dB per decade (all-pole families) | 6 dB per octave per pole | |
| Order for a spec | buttord, cheb1ord, cheb2ord, ellipord | running spec: 12, 7, 7, 5 |