Background
The most common method of designing an
IIR digital filter (that is, a
digital filter with both
poles and
zeros) 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 domain.
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.
Description
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.
Important Details
The mapping thus generated has several nice properties: it is
one-to-one and
order-preserving, 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 systems).
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.
Intuition
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.
Sources:
- 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