# 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)