Side-by-side comparison
| Parameter | Bilinear Transform | Impulse Invariance |
|---|---|---|
| Mapping Technique | s → z via impulse response matching | s → z via s = (2/T)·(z−1)/(z+1) substitution |
| Aliasing | Present — overlapping spectra above fs/2 | None — entire jΩ axis maps to unit circle |
| Frequency Warping | No warping; linear frequency mapping | Nonlinear warping: Ω = (2/T)·tan(ω/2) |
| Suitability for Highpass / Bandstop | Not suitable — aliasing corrupts stopband | Suitable after pre-warping critical frequencies |
| Stability Preservation | Stable analog poles → stable digital poles | Stable analog poles always map inside unit circle |
| Typical Sampling Rate Assumption | Requires high Ts (oversampling) to minimize aliasing | Works at any Ts; pre-warp before design |
| Common Application | Bandlimited lowpass filters, audio smoothing | Butterworth, Chebyshev IIR design in MATLAB fdatool |
| Pre-warping Needed | No | Yes — set Ωp = (2/T)·tan(ωp/2) before design |
| Order of Resulting Filter | Same as analog prototype | Same as analog prototype |
| MATLAB Function | impinvar() | bilinear() |
Key differences
Impulse invariance sets h[n] = T·h_a(nT), so digital poles sit at z = e^(sT), preserving the analog impulse response exactly — but any spectral energy above fs/2 folds back and corrupts the passband. This makes it useless for highpass or bandstop filters. Bilinear substitution s = (2/T)·(z−1)/(z+1) maps the entire left half s-plane to the interior of the unit circle, eliminating aliasing entirely. The cost is frequency warping: a cutoff designed at 1 kHz with T=1/8000 must be pre-warped to Ω = 2×8000×tan(π×1000/8000) ≈ 6498 rad/s before applying the analog prototype.
When to use Bilinear Transform
Use impulse invariance for strictly bandlimited lowpass filters where the analog prototype already attenuates heavily before fs/2. FIR-like audio smoothing filters operating well below Nyquist are a textbook example.
When to use Impulse Invariance
Use bilinear transform for any highpass, bandpass, or bandstop digital IIR filter design. MATLAB's fdatool and the butter() + bilinear() chain use this method by default for all standard IIR filters.
Recommendation
Choose bilinear transform for virtually every practical IIR filter design. Impulse invariance is mainly a teaching tool today — aliasing makes it unsuitable for anything except bandlimited lowpass applications. Always pre-warp your critical frequencies before applying the bilinear substitution.
Exam tip: University examiners consistently ask you to state why impulse invariance fails for highpass filters — write "aliasing due to spectral overlap above Nyquist" and show the folded spectrum diagram.
Interview tip: Placement interviewers at core DSP companies ask the pre-warping formula; give Ωd = (2/T)·tan(ω/2) and explain that without it, the designed cutoff will shift from the intended digital frequency after transformation.