Reading
Stories Mode

Bilinear Transform

~13 min read Lesson 3 of Module 8

Bridging Analog and Digital

The previous lesson introduced three classical analog filter families — Butterworth, Chebyshev, and Elliptic — each with well-understood pole-zero placements in the s-plane. The question now is: how do we turn an analog filter H_a(s) into a digital filter H(z)? The answer used in virtually every practical IIR design is the bilinear transform.

The bilinear transform is a substitution that maps every point in the s-plane to a unique point on the unit circle of the z-plane — and vice versa. It guarantees that a stable analog filter (poles in the left half of the s-plane) always maps to a stable digital filter (poles inside the unit circle). There is no aliasing — a critical advantage over the earlier impulse invariant method.

The Substitution Formula

The bilinear transform replaces the complex frequency variable s with a function of z:

Bilinear Transform Substitution
s = \frac{2}{T}\cdot\frac{z - 1}{z + 1}
T is the sampling period (T = 1/f_s). Substituting this into H_a(s) yields H(z) = H_a(s)|_{s=(2/T)(z-1)/(z+1)}. The factor 2/T is sometimes written as just a constant k when the exact frequency scaling is handled by pre-warping.

This substitution is algebraic and exact — no approximation is involved in the transform itself. The only imperfection introduced is a nonlinear warping of the frequency axis, which must be compensated for.

Frequency Warping

Evaluating the bilinear substitution on the unit circle (z = e^{jω}) reveals how analog frequencies Ω map to digital frequencies ω:

Frequency Warping Relationship
\Omega = \frac{2}{T}\tan\!\left(\frac{\omega T}{2}\right)
Ω is the analog frequency (rad/s) and ω is the digital frequency (rad/sample, ranging from −π to π). As ω approaches ±π (the Nyquist frequency), Ω approaches ±∞. The entire infinite analog frequency axis is compressed into the finite digital range [−π, π].

This compression is the source of frequency warping. Near DC (ω ≈ 0), the mapping is nearly linear: Ω ≈ ω/T. But as ω approaches π, the analog frequencies are dramatically compressed. A sharp cutoff at Ω_c in the analog domain corresponds to a different digital cutoff ω_c — they are not equal.

Why Warping Doesn't Destroy the Filter

Frequency warping distorts the frequency axis — but for filters whose specifications are about passband and stopband edges rather than exact shape, this is acceptable. The equiripple or monotone character within each band is preserved. Only the transition edge locations shift. Pre-warping corrects exactly those edge locations.

Band character is preserved — only edge frequencies shift

Pre-Warping Critical Frequencies

The solution to frequency warping is to pre-warp the analog prototype before applying the bilinear transform. If you want the digital filter to have its −3 dB point (or equiripple band edge) at digital frequency ω_c, you design the analog prototype with a cutoff at the pre-warped analog frequency:

Pre-Warping Formula
\Omega_c = \frac{2}{T}\tan\!\left(\frac{\omega_c T}{2}\right)
Design the analog prototype with cutoff Ω_c (pre-warped). After applying the bilinear transform, the digital filter's cutoff lands exactly at ω_c. T is the sampling period; if you set T = 2 the formula simplifies to Ω_c = tan(ω_c / 2).

Pre-warping ensures that one or two critical frequencies — the passband edge, the stopband edge, or the −3 dB point — land precisely in the right place after the bilinear transform compresses the frequency axis. All other frequencies will still be warped, but the specifications are met at the locations that matter.

The Complete Design Workflow

Combining analog prototype design with the bilinear transform gives a complete, practical IIR filter design procedure:

Step 1
Specify the Digital Filter
Define passband edge ω_p, stopband edge ω_s, maximum passband ripple δ_p, and minimum stopband attenuation δ_s — all in digital frequency (rad/sample).
Step 2
Pre-Warp the Edges
Convert ω_p and ω_s to analog frequencies Ω_p = (2/T)·tan(ω_p·T/2) and Ω_s = (2/T)·tan(ω_s·T/2).
Step 3
Design Analog Prototype
Use Butterworth, Chebyshev, or Elliptic formulas with the pre-warped Ω_p and Ω_s to find the minimum order N and compute H_a(s).
Step 4
Apply Bilinear Transform
Substitute s = (2/T)(z−1)/(z+1) into H_a(s). Expand and simplify to obtain H(z) as a ratio of polynomials in z^{−1}.

The result is a digital IIR filter whose magnitude response meets the original specifications exactly at the pre-warped critical frequencies. In practice, design tools (MATLAB's bilinear(), Python's scipy.signal.bilinear()) handle this algebra automatically.

Bilinear vs. Impulse Invariant

Before the bilinear transform became standard, engineers used the impulse invariant method — sampling the analog impulse response to create the digital filter. The bilinear transform is preferred for most applications because:

Property Impulse Invariant Bilinear Transform
Aliasing Yes — stopband aliases wrap around None — complete s→z mapping
Frequency axis Linear (but aliased) Warped (but no aliasing)
Suitable filter types Lowpass only (stopband must be negligible near Nyquist) Any type — LP, HP, BP, BS
Impulse response Preserved (sampled) Changed by warping
Industry usage Rare (historical) Standard

Highpass, Bandpass, and Bandstop Designs

The bilinear transform workflow is not limited to lowpass filters. For highpass, bandpass, and bandstop designs, an additional frequency transformation step is inserted between the analog lowpass prototype and the bilinear substitution:

LP → HP
Lowpass to Highpass
Replace s with Ω_c/s in the prototype. This maps the lowpass response to a highpass response with the same edge frequencies (after pre-warping).
LP → BP
Lowpass to Bandpass
Replace s with (s² + Ω_0²)/(B·s). Doubles the filter order since each pole generates two bandpass poles. Requires pre-warping both band-edge frequencies.
LP → BS
Lowpass to Bandstop
Replace s with B·s/(s² + Ω_0²). Creates a notch-filter structure. Also doubles the filter order. Useful for hum removal and interference rejection.
Tools
MATLAB / Python
Functions like butter(N,'high'), cheby1(N,Rp,'bandpass'), and scipy.signal.iirdesign() handle all transformations and bilinear mapping automatically.

Stability and the Unit Circle

One of the most elegant properties of the bilinear transform is its stability guarantee. The left half of the s-plane (Re{s} < 0) maps exactly to the interior of the unit circle in the z-plane (|z| < 1). The imaginary axis (jΩ) maps to the unit circle itself (|z| = 1). The right half-plane maps outside the unit circle.

Stability is Guaranteed

Because the bilinear transform is a one-to-one mapping between the s-plane and z-plane (excluding z = −1 ↔ s = ∞), a causal analog prototype that is stable — with all poles in the left half-plane — always produces a causal, stable digital filter with all poles inside the unit circle. No stability check is needed after the transformation.

Left half-plane → inside unit circle: stability is preserved by construction
Key Takeaways
  • The bilinear transform substitutes s = (2/T)(z−1)/(z+1) to map an analog prototype H_a(s) to a digital IIR filter H(z), with no aliasing.
  • The mapping compresses the entire analog frequency axis (−∞ to +∞) into the digital range (−π to π) — creating frequency warping.
  • Pre-warping corrects for this distortion: design the analog prototype at Ω_c = (2/T)·tan(ω_c·T/2) so the digital filter's critical frequency lands exactly where required.
  • Stability is guaranteed: analog poles in the left half-plane always map to digital poles inside the unit circle.
  • The bilinear transform superseded the impulse invariant method because it eliminates aliasing and works for all filter types — not just lowpass.
  • Additional frequency transformations (LP→HP, LP→BP, LP→BS) can be composed with the bilinear transform to design any filter type from a lowpass prototype.
  • In practice, the entire workflow (prototype design + pre-warping + bilinear + frequency transformation) is automated by butter(), cheby1(), ellip(), and similar functions in MATLAB and SciPy.
Previous Butterworth, Chebyshev & Elliptic Module Overview Next FIR vs. IIR — Trade-offs