The Matched z-Transform

Two transform methods are available: the bilinear transform and the matched z-transform.

In most circumstances the bilinear transform is superior. The principal disadvantage of the BLT is that the frequency scale is ``warped'', i.e. distorted in a non-linear fashion, so that, e.g. for a LP filter,

where fc is the corner frequency and fs is the sampling frequency.

In most cases this is just what you want: for a LP or BP filter you want a response which is exactly zero at the Nyquist frequency (fs/2), and for a HP filter you want the response to be exactly unity at this frequency.

The one exception to this is the Bessel filter. The only advantage of a Bessel design over a Butterworth or Chebyshev is that the phase response is nearly linear throughout the passband, i.e. the group delay is almost constant throughout the passband. The ``warping'' inherent in the bilinear transform method upsets this linearity. To get round this problem, tick (check) the ``matched z-transform'' box. The matched z-transform does not warp the frequency scale, so a digital Bessel filter designed by this method will have the near-linear phase characteristic you'd like to see.

In fact, a low-pass filter designed by MZT is impulse-invariant with the analogue prototype, which means that it has the same impulse response, so it behaves identically to the corresponding analogue filter. Strictly speaking this is true only if you ignore aliasing: if the response of the digital LP filter is not negligible at fs/2, the response in the vicinity of this frequency will be perturbed by the spurious response at frequencies above fs/2, which are folded down into the band below fs/2. That's why you're advised to check the frequency response graphs carefully if you use this method!

A further advantage of the MZT is that the number of zeros is reduced, compared with the BLT case. Further information is given in the PostScript documentation for the mkfilter program. An LP filter designed by MZT has no z-plane zeros. This means that no xvals vector is required; this improves efficiency. Have a look at the generated code.

To summarize: you might use the matched z-transform if

Tony Fisher /