The most common method of designing an IIR digital filter
(that is, a digital filter
with both poles
) is to first design an analog filter
that meets the design specifications, then transform it to a digital filter using a transformation function
to map from the Laplace
domain to the z-transform
The bilinear transform is the most commonly used function of this type. (Other transforms are sometimes used in other applications; for instance, the step-invariant transformation for feedback control designs.) It is also known as the trapezoidal approximation.
The bilinear transform converts a transfer function
in the Laplace transform
domain to one in the z-transform
domain, by substituting:
s = c*(z-1)/(z+1)
where c is a constant that can be set arbitrarily to match one particular analog frequency is mapped exactly to a particular digital frequency.
The mapping thus generated has several nice properties: it is one-to-one
, and it maps the left-hand s-plane
in the Laplace domain to the interior of the unit circle
in the z-domain (i.e., stable
region to stable region, for causal
The mapping is not linear. By setting z = exp(jΩ) and s = jω in the bilinear transform equation, the relation between analog and digital frequencies can be extracted:
ωanalog = c tan(Ωdigital/2)
Thus, the frequency response of an analog filter will be "warped" in the resulting digital filter.
There are two methods of compensating for this frequency distortion. First, if an existing analog filter is being converted, the constant c can be selected to make one the filters match at one particular frequency (for instance, the filter's cutoff frequency). More commonly, the filter's frequency specifications can be made in the digital domain and converted back to the analog domain (with an arbitary choice of c). An analog filter is then designed to meet these specifications; when converted back to a digital filter, the critical frequencies will be in the right places.
The bilinear transform is related to the trapezoidal approximation
in numerical integration
. Consider a difference equation
that approximates integration using this method:
y(n) = y(n-1) + T*(x(n) - x(n-1))/2
where T is the sampling period. Taking the z-transform and simplifying yields:
Y(z)/X(z) = (T/2)*(z+1)/(z-1)
Compare this to the Laplace transform of an integrator:
Y(s)/X(s) = 1/s
Clearly, applying the bilinear transform with c=2/T to one will yield the other.
- Digital Signal Processing, Third Edition, by John Proakis and Dimitris Manolakis. (ISBN 0-13-373762-4)
- Digital Filtering: An Introduction, by Edward Cunningham. (ISBN 0-471-12475-3)
- my own head