A three-sample filter has two zeros inside the unit circle. Below, they flip across the circle one at a time. Watch the gain curve first, then the stems.
Flip a zero, keep the gain
Zeros −0.5 and −0.8, flipped one at a time across the unit circle to −2 and −1.25.
Both zeros inside the circle: h = 1, 1.3, 0.4. Its phase comes back to 0° at π.
Describe this picture
Three panels. The plane has the real part across and the imaginary part up, on one scale both ways, with the unit circle. The two zeros are open circles, one in the accent colour (the one that starts at ) and one in the second colour (the one that starts at ), each labelled with its position. During a flip the zero rides a dotted arc, which stays faint afterwards. The gain panel draws against in rad/sample as one solid curve. The stem panel draws the current as stems with square heads; from the first flip on, it also draws the minimum-phase as faint open circles, named “both zeros inside”. The readouts are the number of zeros inside, and the phase at .
The clip lasts 13 s. It starts with both zeros inside: is 1, 1.3 and 0.4, and the phase comes back to 0° at ; the readouts are 2, 1.00 and 0.0°. Then flips to , and at 5.5 s the gain curve has not moved, but is 0.5, 1.4 and 0.8, and the phase falls to −180° at ; the readouts are 1, 0.50 and −180.0°. Then flips to . At the end is 0.4, 1.3 and 1, the first filter reversed, with −360° at ; the readouts are 0, 0.40 and −360.0°. After the clip each zero is a button, named “Zero from −0.5” and “Zero from −0.8”; a flipped one is pressed and reads “outside the circle”. A flip takes 1.5 s, and the choice is kept in the link, as flip.out.
Flip a zero, keep the gain
On the page Transfer functions, poles and zeros (16.3) you read a filter’s gain off its zeros: on the unit circle, the gain is the product of the distances from the point to the zeros. Start with a three-sample filter whose impulse response is 1, 1.3 and 0.4 for . Its transfer function factors as
so its zeros are at and , both inside the unit circle. The gain is at and at , so this is a low-pass.
Now replace the factor by . Its zero is where , which is : the mirror point of from All-pass systems (17.1). On the circle the two factors have the same size, which is 17.1’s identity:
The first step takes out , whose size is 1. The last step uses the fact that a number and its conjugate have the same size. So the gain cannot change when a zero is flipped. The same holds for the other zero, , which flips to through the factor . In general, a factor becomes , and its zero moves from to .
What does change is the impulse response and the phase. The picture at the top of the page flips the two zeros one at a time. Watch its gain curve and then its stems. The curve never moves, yet the stems do: the weight of slides from the start of the response to its end, so that falls from 1 to 0.5 to 0.4. The last filter is the first one reversed. It is no accident that is smaller each time. For a product of factors like , is the product of the constants , and a flip replaces a constant 1 by 0.5 or by 0.8.
The phase at can be read from the factors. At we have . The factor becomes , which is positive and has angle 0°. The flipped factor becomes , which is negative. Following the unwrapped phase of Frequency response of discrete-time systems (12.4) from , it ends at , which is rad. Each flip of a real zero on the negative axis adds half a turn of lag at .
After the clip, tap a zero, or press Enter or Space on it, to flip it yourself. Flip only the second zero: then is 0.8, 1.4 and 0.5, with the same gain and −180° at .
Minimum, maximum and mixed phase
These filters have names. A system with every zero (and every pole) inside the unit circle is minimum phase. One with every zero outside is maximum phase. One with some of each is mixed phase. The first filter above is minimum phase, the last is maximum phase, and the two in between are mixed phase. I write and for the minimum-phase and maximum-phase filters that share one gain.
Why “minimum”? Each flipped factor is the old factor times an all-pass:
The fraction has size 1 on the circle, and from 17.1 its phase only falls. So each flip multiplies the filter by an all-pass and can only add lag. Among filters with one gain and the same number of zeros, the one with every zero inside has the least.
Here is the evidence for the four filters in this lesson. The gain is the same for all of them: 2.7, 2.3289, 1.4318, 0.5255 and 0.1 at , , , and . The unwrapped phases, in degrees, are below.
| Zeros | Ω = 0.25π | Ω = 0.5π | Ω = 0.75π | Ω = π |
|---|---|---|---|---|
| , (minimum) | −34.50 | −65.22 | −81.16 | 0 |
| , (mixed) | −39.77 | −77.91 | −111.19 | −180 |
| , (mixed) | −50.23 | −102.09 | −158.81 | −180 |
| , (maximum) | −55.50 | −114.78 | −188.84 | −360 |
In each column the minimum-phase row has the highest value, which means the least lag. The group delay says the same thing in one number. At it is 0.778 samples for the minimum-phase filter, 0.889 and 1.111 for the two mixed ones and 1.222 for the maximum-phase one. It is smallest for the minimum-phase filter because the all-pass factor of each flip adds a positive delay.
Energy, sample by sample
Minimum phase has a second meaning in time. The energy of is (1.3, How big is a signal), and I call the running total the energy so far:
All the filters here end at the same total, . That follows from Parseval’s relation of Properties of the DTFT (12.3): the energy in time equals the energy in frequency, and the frequency side is the squared gain, which a flip leaves alone. The only open question is how fast the energy arrives.
The minimum-phase filter is ahead at and , and all three tie at because the totals match. At the gap is large: the minimum-phase filter has already delivered 1 of its 2.85, and the maximum-phase one only 0.16, which is . The ordering is not special to these three. Among causal, stable filters with one gain, the minimum-phase one has the most energy in the first samples, for every . A minimum-phase response is the one that arrives promptly.
Undoing a filter
The last property is the one engineers use most. To undo a filter, you build its inverse . From Transfer functions, poles and zeros (16.3), the poles of are the zeros of . The inverse of a minimum-phase filter has its poles inside the circle, at and . By Stability and causality (16.4), a causal system with its poles inside is stable. So the causal inverse of is stable. Its impulse response is 1, −1.3, 1.29, −1.157 and 0.9881, and it keeps dying away, each term about 0.8 times the last in size once the first few have passed.
The maximum-phase filter has its zeros at and , so its inverse has poles outside. The causal inverse then grows: 2.5, −8.125, 20.16, −45.2 and 96.49, with each term about twice the last in size. A stable inverse of exists, but it is not causal: it needs samples from the future. The same is true of any filter with a zero outside the circle, including the two mixed ones; the other mixed filter, with equal to 0.8, 1.4 and 0.5, has a causal inverse that starts 1.25, −2.1875, 3.047, −3.965, 5.034 and grows too.
So only a minimum-phase system can be undone by a system that is both causal and stable. That is why equalisers and deconvolution methods model the thing they undo as minimum phase.
Minimum phase plus an all-pass
A filter that is not minimum phase is not unrelated to the minimum-phase one. Take the mixed filter with zeros and , and write its flipped factor as above:
The second factor is the all-pass of 17.1 with its pole at . The gains multiply, and the all-pass gives 1, so . The phases add: . So a filter with these zeros is its minimum-phase twin followed by an all-pass.
The instrument below draws the three phases as curves. Think of a journey: the minimum-phase curve is the shortest route, and the all-pass is a detour that costs time but no distance on the map.
Minimum phase plus an all-pass
H(z) = (0.5 + z⁻¹)(1 + 0.8z⁻¹) is H_min(z) = (1 + 0.5z⁻¹)(1 + 0.8z⁻¹) followed by H_ap(z) = (0.5 + z⁻¹)/(1 + 0.5z⁻¹).
Describe this picture
One panel of unwrapped phase in degrees against from 0 to rad/sample, for , which is followed by . is a solid line in the accent colour, a dashed line in the second colour, and a thick dotted line, each labelled next to its curve. A dotted vertical cursor stands at ; once a curve is drawn, the cursor carries a dot on , a square on and a diamond on . The readouts are the three phases at the cursor, which read “not yet” until their curve is drawn.
The clip lasts 13 s. First draws: its phase dips to −81° and comes back to 0° at , and it reads −65.2° at the cursor. Then draws: its phase only falls, to −180° at , and it reads −36.9°. Last, draws, each point lowered from by the amount of , with a short vertical tick showing the drop at the moving end; it reads −102.1°, and the end caption adds −65.2° and −36.9° to get it. After the clip the cursor is a handle named “Frequency Ω”, with a value like “0.50π rad/sample”. The arrow keys move it by , Page Up and Page Down by , and Home and End jump to 0 and . The position is kept in the link, as split.omega, in units of .
Notice that the all-pass curve only ever goes down. You can check the sum by hand at . After the clip, drag the cursor, or use the arrow keys, to read the three phases at any .
Try . The caption then reads “Ω = 0.75π: −81.2° + (−77.6°) = −158.8°.” Each term is rounded to one decimal, and the sum is computed from the unrounded values, and , so it can differ from the sum of the rounded terms by 0.1°. Group delay adds in the same way, because it is the slope of the phase: at the minimum-phase part contributes 0.590 samples and the all-pass part 0.600, which total 1.190.
The maths behind it · Cholesky factors
The Cholesky factor of a positive-definite Toeplitz matrix is lower-triangular, with its weight packed toward the diagonal. For long sequences its rows approach the minimum-phase factor of the matching spectrum. “Weight first” in time and “lower-triangular” in matrices are one idea.
Worked example
Split the other mixed filter, with equal to 0.8, 1.4 and 0.5. Its transfer function is , with zeros at and .
The zero at is outside. Its mirror point is , so flipping it back gives the minimum-phase twin , which is the first filter of this page. The factor that was flipped is , so
an all-pass with its pole at .
Check the gain at , where . The size of is , and the size of is . Their product is 1.4318, the same as in the table above.
Check the phase at . The minimum-phase twin has from the table. The all-pass has numerator , with angle , and denominator , with angle . Their difference is . The sum is , which matches the table to the rounding of the entries.
Compare energies: the energy so far is 0.64, 2.60 and 2.85 for this filter, against 1, 2.69 and 2.85 for the twin. The twin is ahead at and at . Its causal inverse is stable, and this filter’s is not.
Where you’ll meet this
Linear phase, the opposite trade, is the subject of Linear-phase systems (17.3). Minimum-phase FIR design is in Chapter 19 (19.4). Spectral factorisation, which finds the minimum-phase filter for a given gain, and linear prediction are in 25.3. The exact link between the log of the gain and the phase of a minimum-phase filter is the Hilbert relation of 27.2.
The maths behind it · invertible moving-average models
A moving-average model of a time series is chosen invertible, with its zeros inside the unit circle, so that each noise value can be recovered from the past data. That is the minimum-phase choice among the models with the same autocorrelation.
Reference card
| Quantity | Formula | Notes |
|---|---|---|
| Flip a zero, keep the gain | zero moves to | |
| Minimum phase | every zero and pole inside the circle | least lag; energy first |
| Maximum phase (FIR) | every zero outside; is the minimum one reversed | most lag |
| Decomposition | ||
| Phase at (FIR, real zeros) | per zero outside the circle | 0°, −180°, −360° here |
| Energy so far | equal totals (Parseval) | |
| Inverse | causal and stable ⇔ minimum phase | zeros become poles |