All-pass filters have unity magnitude response across all frequencies but introduce frequency-dependent phase shifts. They have poles inside the unit circle (or left s-plane) and zeros as their mirror images, creating complementary magnitude. Used as phase equalizers to correct non-linear phase from other filters, or to create group delay for frequency-selective delay adjustments.
Design a 2nd-order all-pass filter and verify its magnitude response is unity while phase changes significantly. Cascade it with a non-minimum-phase filter to equalize phase response.
From frequency response and Bode plots, you know that a filter is characterized by H(jω) = |H(jω)| e^(j∠H(jω)) — a complex number assigning magnitude and phase to every frequency. Most filters use magnitude shaping as their primary function: low-pass filters attenuate high frequencies, band-pass filters reject out-of-band components. An all-pass filter is a deliberately different beast: its magnitude response |H(jω)| = 1 at every frequency — nothing is attenuated — while its phase response ∠H(jω) varies significantly with frequency. It passes all amplitudes unchanged while reshaping the phase spectrum. The name is precise: all frequencies pass, just with different delays.
The flat-magnitude property is not accidental — it follows from a specific symmetry in pole and zero placement. A first-order continuous-time all-pass has the form H(s) = (s − a)/(s + a) where a > 0. The zero at s = +a (right half-plane) is the mirror image of the pole at s = −a (left half-plane) across the imaginary axis. For any purely imaginary frequency s = jω: |jω − a| = √(ω² + a²) and |jω + a| = √(ω² + a²) — numerator and denominator magnitudes are always equal, so |H(jω)| = 1 identically. But the angles differ: the zero contributes arctan(ω/a) measured from the positive real axis, while the pole contributes −arctan(ω/a), giving a net phase shift ∠H(jω) = −2 arctan(ω/a), ranging from 0° at DC to −180° at ω → ∞. A second-order all-pass section, with a complex-conjugate pole pair and mirrored zeros, contributes up to −360° of phase shift.
The engineering application is phase equalization: correcting the non-linear phase distortion introduced by other filters. When you design a sharp low-pass filter (Butterworth, Chebyshev, elliptic), its phase response is strongly non-linear — frequencies in the passband experience different amounts of delay. This matters whenever the timing relationships between frequency components carry information: in digital data transmission, non-linear phase smears pulse shapes and causes intersymbol interference; in audio, it can distort transients. Group delay, defined as τ(ω) = −d∠H(ω)/dω, measures how much each frequency component is delayed. An all-pass can be designed with a group delay profile that is the complement of the preceding filter's group delay distortion — when cascaded, the combined group delay is flat. Crucially, the all-pass adds no attenuation to the passband that was already carefully shaped.
The design constraint worth understanding deeply: cascading an all-pass section always adds delay — it can redistribute group delay across frequencies (flatten the curve) but cannot reduce its average value. Every all-pass stage increases total system latency. In real-time systems (voice communication, control loops), this is a genuine cost. In offline or buffered systems (audio mastering, stored data playback), the extra delay is inconsequential. The practical design flow is: (1) measure the group delay of the filter you want to equalize; (2) fit a cascade of all-pass sections to produce the complementary delay profile; (3) verify the combined response has acceptably flat group delay over the passband. Modern filter design software automates this optimization, but the pole-zero mirror structure remains the conceptual foundation for understanding why it works.
No topics depend on this one yet.