1. Why Another Frequency Domain?
The z-transform is the natural domain for discrete-time systems — poles and zeros live on or inside the unit circle, and stability has a clean geometric interpretation. But designing filters is easiest in the continuous-time s-domain, where decades of classical theory (Butterworth, Chebyshev, elliptic) give analytic prototype responses.
The challenge is bridging these two worlds. Impulse-invariant transformation preserves time-domain shape but suffers from aliasing in the frequency domain. The bilinear transformation eliminates aliasing entirely by establishing a one-to-one, conformal mapping between the entire s-plane (or an equivalent pseudo-analog plane) and the z-plane. The price paid is a non-linear frequency compression known as frequency warping — the central theme of this article.
2. The Bilinear Transformation Defined
Let \(z \in \mathbb{C}\) be the complex z-plane variable and \(T > 0\) the sampling period. The bilinear (Tustin) transformation is the Möbius map:
Its inverse — mapping from the w-plane back to the z-plane — is obtained by solving for \(z\):
Both directions are rational functions of degree one (Möbius transformations), so the mapping is conformal (angle-preserving) at every point except the poles \(z = -1\) and \(W = 2/T\).
2.1 Notation Conventions
Throughout this article we write \(z = \sigma_z + j\omega_z\) (real and imaginary parts in the z-plane — not to be confused with the digital frequency \(\omega\)), and \(W = \Sigma + j\Omega\) (real and imaginary parts in the w-plane, directly analogous to the Laplace variable \(s = \sigma + j\omega\)). The digital radian frequency is \(\omega \in [-\pi, \pi)\), occurring on the unit circle \(z = e^{j\omega}\).
3. Geometric Mapping: Where Does Each Region Go?
The power of understanding the bilinear transform lies in seeing exactly how it maps the canonical regions of the z-plane. Write \(z = x + jy\) and compute \(W = \Sigma + j\Omega\) by direct substitution.
3.1 Derivation of Real and Imaginary Parts
$$W = \frac{2}{T} \cdot \frac{(x-1) + jy}{(x+1) + jy}$$
$$W = \frac{2}{T} \cdot \frac{[(x-1)+jy]\,[(x+1)-jy]}{(x+1)^2 + y^2}$$
Numerator \(= (x^2 - 1 + y^2) + j\,2y\)
$$\Sigma = \frac{2}{T} \cdot \frac{x^2 + y^2 - 1}{(x+1)^2 + y^2}, \qquad \Omega = \frac{2}{T} \cdot \frac{2y}{(x+1)^2 + y^2}$$
These two expressions are the master formulae. From them every geometric mapping result follows immediately.
3.2 The Unit Circle Maps to the Imaginary Axis
On the unit circle, \(|z| = 1\), i.e.\ \(x^2 + y^2 = 1\). Substituting:
So the entire unit circle maps to the imaginary axis \(\Sigma = 0\). The imaginary axis of the w-plane is the analog frequency axis — this is exactly what we want for filter design.
3.3 Inside the Unit Circle Maps to the Left Half-Plane
For \(|z| < 1\) we have \(x^2 + y^2 < 1\), so the numerator of \(\Sigma\) is negative and the denominator is always positive, giving \(\Sigma < 0\). The open unit disk maps bijectively onto the open left half of the w-plane — the stability region of continuous-time systems.
3.4 Outside the Unit Circle Maps to the Right Half-Plane
Symmetrically, \(|z| > 1 \Rightarrow x^2 + y^2 > 1 \Rightarrow \Sigma > 0\). The unstable z-plane region maps to the unstable right half w-plane.
Figure 1: The bilinear transform maps the open unit disk bijectively onto the open left half w-plane, and the unit circle onto the imaginary axis. The pole of W at z = −1 maps to W = ∞.
| z-Plane Region | Condition | w-Plane Image | Physical Meaning |
|---|---|---|---|
| Unit circle | \(|z| = 1\) | Imaginary axis (\(\Sigma = 0\)) | Analog frequency axis |
| Open unit disk | \(|z| < 1\) | Open left half-plane (\(\Sigma < 0\)) | Stable continuous-time region |
| Exterior of unit disk | \(|z| > 1\) | Open right half-plane (\(\Sigma > 0\)) | Unstable continuous-time region |
| \(z = +1\) (DC) | — | \(W = 0\) | DC ↔ DC preserved |
| \(z = -1\) (Nyquist) | — | \(W \to \infty\) | Nyquist ↔ infinite analog freq. |
| \(z = j\) (\(\omega = \pi/2\)) | — | \(W = j\tfrac{2}{T}\) | Quarter-sample freq. ↔ \(\Omega = 2/T\) |
4. The Frequency Warping Relation
The most practically important consequence of the bilinear transform is the non-linear relationship between digital frequency \(\omega\) and pseudo-analog frequency \(\Omega\). We derive it by restricting \(z = e^{j\omega}\) on the unit circle.
$$W = \frac{2}{T} \cdot \frac{e^{j\omega} - 1}{e^{j\omega} + 1}$$
$$W = \frac{2}{T} \cdot \frac{e^{j\omega/2}(e^{j\omega/2} - e^{-j\omega/2})}{e^{j\omega/2}(e^{j\omega/2} + e^{-j\omega/2})} = \frac{2}{T} \cdot \frac{2j\sin(\omega/2)}{2\cos(\omega/2)}$$
$$W = j\,\frac{2}{T}\tan\!\left(\frac{\omega}{2}\right) \quad \Longrightarrow \quad \boxed{\,\Omega = \frac{2}{T}\tan\!\left(\frac{\omega}{2}\right)\,}$$
4.1 Inverse Warping
Given a desired digital cut-off \(\omega_c\), the corresponding pre-warped analog frequency is:
This is used to pre-warp the analog prototype specification before applying the inverse bilinear transform. After transformation, the digital filter will have its transition band exactly at \(\omega_c\).
Figure 2: Frequency warping curve Ω = (2/T)tan(ω/2) vs. digital frequency ω. The dashed line is the ideal linear relationship. Near ω = 0 the curves coincide; near ω = π the tangent diverges, compressing the entire positive real axis onto (0, π) — this is how aliasing is eliminated.
4.2 Key Properties of the Warping Function
- Near DC (\(\omega \approx 0\)): \(\tan(\omega/2) \approx \omega/2\), so \(\Omega \approx \omega / T = \omega \cdot f_s / (2\pi)\). The mapping is approximately linear at low frequencies.
- At the Nyquist frequency (\(\omega = \pi\)): \(\tan(\pi/2) \to \infty\). The entire semi-infinite positive analog frequency axis \((0, +\infty)\) is compressed into \((0, \pi)\). This is the mechanism by which aliasing is eliminated.
- Monotonicity: \(\Omega(\omega)\) is strictly increasing on \([0, \pi)\), so magnitude response shapes (monotone, equiripple) are preserved — only frequency axis labels change.
- Odd symmetry: \(\Omega(-\omega) = -\Omega(\omega)\), consistent with the real-valued filter requirement.
5. Conformality and the Möbius Structure
The bilinear transformation belongs to the family of Möbius (linear fractional) transformations — maps of the form \(f(z) = (az+b)/(cz+d)\) with \(ad - bc \neq 0\). Every Möbius transformation is a conformal automorphism of the Riemann sphere; it maps circles and lines to circles and lines.
For \(W = \tfrac{2}{T}\cdot\tfrac{z-1}{z+1}\) we identify \(a = 2/T,\ b = -2/T,\ c = 1,\ d = 1\), giving determinant \(ad - bc = 4/T \neq 0\). The specific circle mapped to a line here is the unit circle (a circle passing through no singularity of the transform), mapped to the imaginary axis — a line, which in the projective sense is a circle through \(\infty\).
The conformal property has a concrete engineering consequence: it guarantees that the shape of poles and zero loci in the z-plane is preserved under the mapping. An ellipse of poles in the s-plane becomes a (warped) ellipse in the z-plane, ensuring that Butterworth, Chebyshev, and elliptic filter pole patterns map cleanly.
6. Transfer Function Conversion
Given a continuous-time prototype transfer function \(H_a(s)\), the digital IIR filter is obtained by substituting \(s \leftarrow W\):
Because \(W\) is a rational function of \(z\) of degree one, and \(H_a(s)\) is rational in \(s\), \(H(z)\) is rational in \(z\) of the same order as \(H_a\). No order inflation occurs.
6.1 Worked Example: First-Order Butterworth LPF
The normalised (cut-off at \(\Omega_c = 1\) rad/s) first-order Butterworth prototype is:
Suppose we want a digital LPF with cut-off at \(\omega_c = \pi/4\) rad/sample and sampling period \(T = 1\) s. Step 1 — pre-warp:
Step 2 — frequency-scale the prototype to cut-off \(\Omega_c\):
Step 3 — apply the bilinear substitution \(s = 2(z-1)/(z+1)\) (with \(T=1\)):
Dividing numerator and denominator by \((2 + \Omega_c)\) and writing \(\alpha = \Omega_c/(2+\Omega_c)\):
With \(\Omega_c \approx 0.8284\): \(\alpha \approx 0.2929\), giving pole at \(z \approx 0.4142\) — well inside the unit circle, confirming stability. The digital cut-off is exactly at \(\omega_c = \pi/4\) by construction of the pre-warp step.
7. Pre-Warping: Correcting for Frequency Compression
Frequency warping would corrupt the cut-off and transition band specifications if not corrected. The remedy is pre-warping: before designing the analog prototype, map every critical frequency specification through the warping relation.
- Identify all critical digital frequencies \(\omega_1, \omega_2, \ldots\) (pass-band edge, stop-band edge, etc.).
- Pre-warp each: \(\Omega_k = \tfrac{2}{T}\tan(\omega_k/2)\).
- Design the analog prototype \(H_a(s)\) to meet the specification at \(\Omega_1, \Omega_2, \ldots\)
- Apply the bilinear substitution \(s = \tfrac{2}{T}\tfrac{z-1}{z+1}\) to obtain \(H(z)\).
- The digital filter \(H(z)\) meets the original specification at \(\omega_1, \omega_2, \ldots\) exactly, because the pre-warping and warping errors cancel.
8. Comparison with Impulse-Invariant Transformation
| Property | Bilinear Transform | Impulse-Invariant |
|---|---|---|
| Aliasing | None (compression prevents aliasing) | Present — spectra overlap at \(\omega = \pm\pi\) |
| Frequency axis mapping | Non-linear (\(\tan\) warping) | Linear (\(\Omega = \omega/T\)) |
| Filter order preserved | Yes | Yes |
| Impulse response match | No | Yes (by definition) |
| Suitable for HPF/BSF | Yes | No (severe aliasing) |
| Pre-warping required | Yes (for critical frequencies) | No |
| Preferred for | All standard IIR filter types | LPF approximations, matched-z |
9. Python Implementation
SciPy provides bilinear and bilinear_zpk for direct conversion, and
iirdesign/butter with the fs argument automates the entire pipeline
including pre-warping.
import numpy as np
from scipy.signal import butter, freqz, bilinear_zpk
# ── Parameters ──────────────────────────────────────────────
fs = 8000 # sampling rate [Hz]
T = 1 / fs # sampling period [s]
fc = 1000 # desired digital cut-off [Hz]
wc = 2 * np.pi * fc / fs # digital cut-off [rad/sample]
# ── Step 1: pre-warp ────────────────────────────────────────
Omega_c = (2 / T) * np.tan(wc / 2)
print(f"Pre-warped analog cut-off: {Omega_c/(2*np.pi):.2f} Hz")
# ── Step 2: design analog Butterworth prototype ──────────────
# scipy.signal.butter with analog=True uses Omega_c directly
from scipy.signal import buttap, zpkbilinear
z_a, p_a, k_a = buttap(4) # 4th-order normalised prototype
# Scale prototype poles to Omega_c
p_a_scaled = p_a * Omega_c
k_a_scaled = k_a * Omega_c**4 # gain scales as Omega_c^N
# ── Step 3: apply bilinear transform ────────────────────────
z_d, p_d, k_d = bilinear_zpk(z_a, p_a_scaled, k_a_scaled, fs=fs)
print("Digital poles:", np.round(p_d, 4))
# ── Step 4: frequency response ───────────────────────────────
from scipy.signal import zpk2tf
b, a = zpk2tf(z_d, p_d, k_d)
w, H = freqz(b, a, worN=4096, fs=fs)
# ── Verify: magnitude at fc should be ≈ -3 dB ───────────────
idx = np.argmin(np.abs(w - fc))
print(f"|H(e^jω)| at {fc} Hz = {20*np.log10(np.abs(H[idx])):.3f} dB")
The bilinear_zpk function internally computes
\(z_d = (1 + z_{a,k}/(2f_s)) / (1 - z_{a,k}/(2f_s))\) for each analog zero and the analogous formula for
poles, corresponding exactly to our inverse mapping \(z = (2 + TW)/(2 - TW)\).
10. Limitations and Practical Considerations
- Phase non-linearity: The bilinear transform does not preserve the group delay of the analog prototype. If linear phase is required, FIR designs are preferred; the bilinear transform is inappropriate.
- Wide-band stop-bands: The \(\tan\) compression stretches the stop-band in digital frequency space, so a stop-band specified over a wide analog range appears narrower than expected. This is usually beneficial (actual stop-band attenuation improves), but must be verified.
- High-order filters and numerical conditioning: Converting high-order (\(N \geq 8\))
filters via direct transfer-function polynomial form is numerically ill-conditioned. Always prefer
second-order section (SOS) cascades, obtainable via
butter(..., output='sos')in SciPy. - Sampling rate selection: The approximation \(\Omega \approx \omega/T\) holds for \(\omega \ll \pi\). For accurate broad-band designs, choose \(f_s\) at least 5–10× above the highest critical frequency.
References
- A. V. Oppenheim & R. W. Schafer — Discrete-Time Signal Processing, 3rd ed., Pearson, 2010. §7.1–7.3.
- J. G. Proakis & D. G. Manolakis — Digital Signal Processing: Principles, Algorithms, and Applications, 4th ed., Pearson, 2007. §8.3.
- L. R. Rabiner & B. Gold — Theory and Application of Digital Signal Processing, Prentice Hall, 1975.
- S. K. Mitra — Digital Signal Processing: A Computer-Based Approach, 4th ed., McGraw-Hill, 2011. §9.5.
- W. S. Burdic — Radar Signal Analysis, Prentice Hall, 1968. (Tustin's original formulation in the context of control systems.)