Skip to content

Minimum phase

Flip a zero across the unit circle and the gain stays; see which version has the least lag, the earliest energy and a causal, stable inverse.

Before this17.1 · 7 more
Chapter 17 · Lesson 2 of 4

First, the picture

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 π.

zeros inside
2
h[0]
1.00
phase at Ω = π
0.0°
0.00 / 13.00 s
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 −0.5-0.5) and one in the second colour (the one that starts at −0.8-0.8), each labelled with its position. During a flip the zero rides a dotted arc, which stays faint afterwards. The gain panel draws ∣H∣\lvert H\rvert against Ω\Omega in rad/sample as one solid curve. The stem panel draws the current h[n]h[n] as stems with square heads; from the first flip on, it also draws the minimum-phase hh as faint open circles, named “both zeros inside”. The readouts are the number of zeros inside, h[0]h[0] and the phase at Ω=π\Omega=\pi.

The clip lasts 13 s. It starts with both zeros inside: hh is 1, 1.3 and 0.4, and the phase comes back to 0° at π\pi; the readouts are 2, 1.00 and 0.0°. Then −0.5-0.5 flips to −2-2, and at 5.5 s the gain curve has not moved, but hh is 0.5, 1.4 and 0.8, and the phase falls to −180° at π\pi; the readouts are 1, 0.50 and −180.0°. Then −0.8-0.8 flips to −1.25-1.25. At the end hh is 0.4, 1.3 and 1, the first filter reversed, with −360° at π\pi; 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 ejΩe^{j\Omega} to the zeros. Start with a three-sample filter whose impulse response hh is 1, 1.3 and 0.4 for n=0,1,2n=0,1,2. Its transfer function factors as

H(z)=1+1.3z−1+0.4z−2=(1+0.5z−1)(1+0.8z−1),H(z)=1+1.3z^{-1}+0.4z^{-2}=(1+0.5z^{-1})(1+0.8z^{-1}),

so its zeros are at −0.5-0.5 and −0.8-0.8, both inside the unit circle. The gain is 1.5×1.8=2.71.5\times1.8=2.7 at Ω=0\Omega=0 and 0.5×0.2=0.10.5\times0.2=0.1 at Ω=π\Omega=\pi, so this is a low-pass.

Now replace the factor (1+0.5z−1)(1+0.5z^{-1}) by (0.5+z−1)(0.5+z^{-1}). Its zero is where z−1=−0.5z^{-1}=-0.5, which is z=−2z=-2: the mirror point 1/p∗1/p^* of −0.5-0.5 from All-pass systems (17.1). On the circle the two factors have the same size, which is 17.1’s identity:

∣0.5+e−jΩ∣=∣e−jΩ∣ ∣0.5ejΩ+1∣=∣1+0.5ejΩ∣=∣1+0.5e−jΩ∣.\begin{aligned} \lvert 0.5+e^{-j\Omega}\rvert &=\lvert e^{-j\Omega}\rvert\,\lvert 0.5e^{j\Omega}+1\rvert\\ &=\lvert 1+0.5e^{j\Omega}\rvert =\lvert 1+0.5e^{-j\Omega}\rvert. \end{aligned}

The first step takes out e−jΩe^{-j\Omega}, 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, −0.8-0.8, which flips to −1.25-1.25 through the factor (0.8+z−1)(0.8+z^{-1}). In general, a factor (1−zkz−1)(1-z_kz^{-1}) becomes (−zk∗+z−1)(-z_k^*+z^{-1}), and its zero moves from zkz_k to 1/zk∗1/z_k^*.

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 hh slides from the start of the response to its end, so that h[0]h[0] falls from 1 to 0.5 to 0.4. The last filter is the first one reversed. It is no accident that h[0]h[0] is smaller each time. For a product of factors like (a+z−1)(a+z^{-1}), h[0]h[0] is the product of the constants aa, and a flip replaces a constant 1 by 0.5 or by 0.8.

The phase at Ω=π\Omega=\pi can be read from the factors. At Ω=π\Omega=\pi we have e−jπ=−1e^{-j\pi}=-1. The factor (1+0.5z−1)(1+0.5z^{-1}) becomes 1−0.5=0.51-0.5=0.5, which is positive and has angle 0°. The flipped factor (0.5+z−1)(0.5+z^{-1}) becomes 0.5−1=−0.50.5-1=-0.5, which is negative. Following the unwrapped phase of Frequency response of discrete-time systems (12.4) from Ω=0\Omega=0, it ends at −180°-180°, which is −π-\pi rad. Each flip of a real zero on the negative axis adds half a turn of lag at π\pi.

After the clip, tap a zero, or press Enter or Space on it, to flip it yourself. Flip only the second zero: then hh is 0.8, 1.4 and 0.5, with the same gain and −180° at π\pi.

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 HminH_\text{min} and HmaxH_\text{max} 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:

0.5+z−1=(1+0.5z−1)⋅0.5+z−11+0.5z−1.0.5+z^{-1}=(1+0.5z^{-1})\cdot\frac{0.5+z^{-1}}{1+0.5z^{-1}}.

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 Ω=0\Omega=0, 0.25π0.25\pi, 0.5π0.5\pi, 0.75π0.75\pi and π\pi. The unwrapped phases, in degrees, are below.

ZerosΩ = 0.25πΩ = 0.5πΩ = 0.75πΩ = π
−0.5-0.5, −0.8-0.8 (minimum)−34.50−65.22−81.160
−0.5-0.5, −1.25-1.25 (mixed)−39.77−77.91−111.19−180
−2-2, −0.8-0.8 (mixed)−50.23−102.09−158.81−180
−2-2, −1.25-1.25 (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 Ω=0\Omega=0 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 hh is ∑nh[n]2\sum_nh[n]^2 (1.3, How big is a signal), and I call the running total the energy so far:

E[n]=∑m=0nh[m]2.E[n]=\sum_{m=0}^{n}h[m]^2.

All the filters here end at the same total, 2.852.85. 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.

0123energy so far, E[n]10.250.162.692.211.852.852.852.85n = 0n = 1n = 2solid: minimum phase (−0.5, −0.8)hatched: mixed phase (−2, −0.8)outlined: maximum phase (−2, −1.25)
Fig. The energy so far. The minimum-phase filter is never behind: it leads before n = 2, all three tie at n = 2 and at the end, 2.85, because the same gain means the same energy (Parseval).

The minimum-phase filter is ahead at n=0n=0 and n=1n=1, and all three tie at n=2n=2 because the totals match. At n=0n=0 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 0.420.4^2. 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 n+1n+1 samples, for every nn. 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 1/H1/H. From Transfer functions, poles and zeros (16.3), the poles of 1/H1/H are the zeros of HH. The inverse of a minimum-phase filter has its poles inside the circle, at −0.5-0.5 and −0.8-0.8. By Stability and causality (16.4), a causal system with its poles inside is stable. So the causal inverse of HminH_\text{min} 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 −2-2 and −1.25-1.25, 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 HmaxH_\text{max} 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 hh 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 −2-2 and −0.8-0.8, and write its flipped factor as above:

H(z)=(0.5+z−1)(1+0.8z−1)=(1+0.5z−1)(1+0.8z−1)⏟Hmin(z)⋅0.5+z−11+0.5z−1⏟Hap(z).\begin{aligned} H(z)&=(0.5+z^{-1})(1+0.8z^{-1})\\ &=\underbrace{(1+0.5z^{-1})(1+0.8z^{-1})}_{H_\text{min}(z)}\cdot\underbrace{\frac{0.5+z^{-1}}{1+0.5z^{-1}}}_{H_\text{ap}(z)}. \end{aligned}

The second factor HapH_\text{ap} is the all-pass of 17.1 with its pole at −0.5-0.5. The gains multiply, and the all-pass gives 1, so ∣H∣=∣Hmin∣\lvert H\rvert=\lvert H_\text{min}\rvert. The phases add: ∠H=∠Hmin+∠Hap\angle H=\angle H_\text{min}+\angle H_\text{ap}. 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⁻¹).

∠H_min
not yet
∠H_ap
not yet
∠H
not yet
0.00 / 13.00 s
Describe this picture

One panel of unwrapped phase in degrees against Ω\Omega from 0 to π\pi rad/sample, for H(z)=(0.5+z−1)(1+0.8z−1)H(z)=(0.5+z^{-1})(1+0.8z^{-1}), which is Hmin(z)=(1+0.5z−1)(1+0.8z−1)H_\text{min}(z)=(1+0.5z^{-1})(1+0.8z^{-1}) followed by Hap(z)=(0.5+z−1)/(1+0.5z−1)H_\text{ap}(z)=(0.5+z^{-1})/(1+0.5z^{-1}). HminH_\text{min} is a solid line in the accent colour, HapH_\text{ap} a dashed line in the second colour, and H=Hmin⋅HapH=H_\text{min}\cdot H_\text{ap} a thick dotted line, each labelled next to its curve. A dotted vertical cursor stands at Ω=0.5π\Omega=0.5\pi; once a curve is drawn, the cursor carries a dot on HminH_\text{min}, a square on HapH_\text{ap} and a diamond on HH. The readouts are the three phases at the cursor, which read “not yet” until their curve is drawn.

The clip lasts 13 s. First HminH_\text{min} draws: its phase dips to −81° and comes back to 0° at π\pi, and it reads −65.2° at the cursor. Then HapH_\text{ap} draws: its phase only falls, to −180° at π\pi, and it reads −36.9°. Last, HH draws, each point lowered from HminH_\text{min} by the amount of HapH_\text{ap}, 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 0.01π0.01\pi, Page Up and Page Down by 0.25π0.25\pi, and Home and End jump to 0 and π\pi. The position is kept in the link, as split.omega, in units of π\pi.

Notice that the all-pass curve only ever goes down. You can check the sum by hand at Ω=0.5π\Omega=0.5\pi. After the clip, drag the cursor, or use the arrow keys, to read the three phases at any Ω\Omega.

Try Ω=0.75π\Omega=0.75\pi. 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, −81.16°-81.16° and −77.65°-77.65°, 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 0.5π0.5\pi 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 hh equal to 0.8, 1.4 and 0.5. Its transfer function is H(z)=(1+0.5z−1)(0.8+z−1)H(z)=(1+0.5z^{-1})(0.8+z^{-1}), with zeros at −0.5-0.5 and −1.25-1.25.

The zero at −1.25-1.25 is outside. Its mirror point is −0.8-0.8, so flipping it back gives the minimum-phase twin Hmin(z)=(1+0.5z−1)(1+0.8z−1)H_\text{min}(z)=(1+0.5z^{-1})(1+0.8z^{-1}), which is the first filter of this page. The factor that was flipped is (0.8+z−1)=(1+0.8z−1)⋅Hap(z)(0.8+z^{-1})=(1+0.8z^{-1})\cdot H_\text{ap}(z), so

Hap(z)=0.8+z−11+0.8z−1,H_\text{ap}(z)=\frac{0.8+z^{-1}}{1+0.8z^{-1}},

an all-pass with its pole at −0.8-0.8.

Check the gain at Ω=0.5π\Omega=0.5\pi, where e−jΩ=−je^{-j\Omega}=-j. The size of 1+0.5e−jΩ1+0.5e^{-j\Omega} is 1.25=1.1180\sqrt{1.25}=1.1180, and the size of 1+0.8e−jΩ1+0.8e^{-j\Omega} is 1.64=1.2806\sqrt{1.64}=1.2806. Their product is 1.4318, the same as in the table above.

Check the phase at 0.5π0.5\pi. The minimum-phase twin has −65.22°-65.22° from the table. The all-pass has numerator 0.8−j0.8-j, with angle −51.34°-51.34°, and denominator 1−0.8j1-0.8j, with angle −38.66°-38.66°. Their difference is −12.68°-12.68°. The sum is −65.22°+(−12.68°)=−77.90°-65.22°+(-12.68°)=-77.90°, 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 n=0n=0 and at n=1n=1. 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

QuantityFormulaNotes
Flip a zero, keep the gain(1−zkz−1)→(−zk∗+z−1)(1-z_kz^{-1})\to(-z_k^*+z^{-1})zero moves to 1/zk∗1/z_k^*
Minimum phaseevery zero and pole inside the circleleast lag; energy first
Maximum phase (FIR)every zero outside; hh is the minimum one reversedmost lag
DecompositionH=Hmin HapH=H_\text{min}\,H_\text{ap}∣Hmin∣=∣H∣\lvert H_\text{min}\rvert=\lvert H\rvert
Phase at π\pi (FIR, real zeros)−180°-180° per zero outside the circle0°, −180°, −360° here
Energy so far∑m=0nhmin[m]2≥∑m=0nh[m]2\sum_{m=0}^{n}h_\text{min}[m]^2\ge\sum_{m=0}^{n}h[m]^2equal totals (Parseval)
Inverse1/H1/H causal and stable ⇔ HH minimum phasezeros become poles

End of lesson 17.2

Where to go next.

Phasorium
LibraryEvery lesson, in order

Parts

About Phasorium
Look