|
In digital signal processing, the bilinear transform is a conformal mapping,
often used to convert a transfer function <math> H_a(s) \ <math> of a linear, time-invariant
(LTI) filter in the continuous-time domain (often called
an analog filter) to a transfer function <math> H_d(z) \ <math> of a linear, shift-invariant filter
in the discrete-time domain (often called a digital filter although there are analog filters
constructed with charge-coupled devices that are discrete-time filters). It
maps positions on the <math> j \omega \ <math> axis, <math> Re[s]=0 \ <math> , in the s-plane to
the unit circle, <math> |z| = 1 \ <math>, in the z-plane . Other bilinear
transforms can be used to warp the frequency response of any discrete-time linear system (e.g., to
approximate the human auditory's non-linear frequency resolution) and are implementable in the discrete
domain by replacing a system's unit delays <math> \left( z^{-1} \right) \ <math> with first order all-pass filters.
The transform preserves stability and maps every point of the frequency response of the
continuous-time filter, <math> H_a(j \omega_a) \ <math> to a corresponding point in the frequency
response of the discrete-time filter, <math> H_d(e^{j \omega_d T}) \ <math> although to a somewhat
different frequency, as shown in the Frequency Warping section below. This means that for every feature
that one sees in the frequency response of the analog filter, there is a corresponding feature, with
identical gain and phase shift, in the frequency response of the digital filter but, perhaps, at a somewhat
different frequency. This is barely noticeable at low frequencies but is quite evident at frequencies close
to the Nyquist frequency.
The bilinear transform is a first-order approximation of the natural logarithm function that is an exact mapping
of the z-plane to the s-plane. When the Laplace transform of a discrete-time signal (with each element of the
discrete-time sequence attached to an appropriately delayed unit impulse), the result is
precisely the Z transform of the discrete-time sequence with the substitution of
| <math>z \ <math>
| <math> = e^{sT} \ <math>
|
|
| <math> = \frac{e^{sT/2}}{e^{-sT/2}} \ <math>
|
|
| <math> \approx \frac{1 + s T / 2}{1 - s T / 2} \ <math>
|
where <math> T \ <math> is the sample time (the reciprocal of the sampling frequency) of the discrete-time filter. The above bilinear approximation can be solved for <math> s \ <math> or a similar approximation for <math> s = (1/T) \log(z) \ \ <math> can be performed.
The inverse of this mapping (and its first-order bilinear approximation) is
| <math>s \ <math>
| <math> = \frac{1}{T} \log(z) \ <math>
|
|
| <math> = \frac{2}{T} \left[ \frac{z-1}{z+1} + \frac{1}{3} \left( \frac{z-1}{z+1} \right)^3 + \frac{1}{5} \left( \frac{z-1}{z+1} \right)^5 + \frac{1}{7} \left( \frac{z-1}{z+1} \right)^7 + \ldots \right] \ <math>
|
|
| <math> \approx \frac{2}{T} \frac{z - 1}{z + 1} \ <math>
|
The bilinear transform essentially uses this first order approximation and substitutes into the continuous-time transfer function, <math> H_a(s) \ <math>
- <math>s \leftarrow \frac{2}{T} \frac{z - 1}{z + 1}<math>
That is
- <math>H_d(z) = H_a(s) \bigg|_{s = \frac{2}{T} \frac{z - 1}{z + 1}}= H_a \left( \frac{2}{T} \frac{z-1}{z+1} \right) \ <math>
The bilinear transform is a special case of a conformal mapping, namely, the Möbius transformation defined as
- <math>z^{\prime} = \frac{a z + b}{c z + d}.<math>
Background
A continuous-time filter is stable if the poles of its transfer function
fall in the negative real half of the complex s-plane. A discrete-time filter is
stable if the poles of its transfer function fall inside the unit circle in the
complex z-plane. The bilinear transform maps the negative real half of the complex s-plane to the
interior of the unit circle in the z-plane. Thus filters designed in the continuous-time domain that are stable are
converted to filters the discrete-time domain that preserve that stability.
Example
As an example take a simple RC-filter. This continuous-time filter has a transfer function
- <math>H_a(s) = \frac{1}{1 + RC s}<math>
If we wish to implement this filter as a digital filter, we can apply the bilinear transform by substituting for
<math>s<math> the formula above; after some reworking, we get the following filter representation:
| <math>H_d(z) \ <math>
| <math> =H_a \left( \frac{2}{T} \frac{z-1}{z+1}\right) \ <math>
|
|
| <math>= \frac{1}{1 + RC \left( \frac{2}{T} \frac{z-1}{z+1}\right)} \ <math>
|
|
| <math>= \frac{1 + z}{(1 - 2 RC / T) + (1 + 2RC / T) z} \ <math>
|
Frequency warping
To determine the frequency response of a contiuous-time filter, the transfer function <math> H_a(s) \ <math>
is evaluated at <math>s = j \omega \ <math> which is on the <math> j \omega \ <math> axis. Likewise, to
determine the frequency response of a discrete-time filter, the transfer function <math> H_d(z) \ <math>
is evaluated at <math>z = e^{ j \omega T} \ <math> which is on the unit circle, <math> |z| = 1 \ <math>.
When the actual frequency of <math> \omega_d \ <math> is input to the discrete-time filter designed by use
of the bilinear transform, it is desired to know at what frequency, <math> \omega_a \ <math>, for the
continuous-time filter that this <math> \omega_d \ <math> is mapped to.
- <math>H_d(z) = H_a \left( \frac{2}{T} \frac{z-1}{z+1}\right) \ <math>
| <math>H_d(e^{ j \omega T}) \ <math>
| <math>= H_a \left( \frac{2}{T} \frac{e^{ j \omega T} - 1}{e^{ j \omega T} + 1}\right) \ <math>
|
|
| <math>= H_a \left( \frac{2}{T} \cdot \frac{e^{j \omega_d T/2} \left(e^{j \omega_d T/2} - e^{-j \omega_d T/2}\right)}{e^{j \omega_d T/2} \left(e^{j \omega_d T/2} + e^{-j \omega_d T/2 }\right)}\right) \ <math>
|
|
| <math>= H_a \left( \frac{2}{T} \cdot \frac{\left(e^{j \omega_d T/2} - e^{-j \omega_d T/2}\right)}{\left(e^{j \omega_d T/2} + e^{-j \omega_d T/2 }\right)}\right) \ <math>
|
|
| <math>= H_a \left(j \frac{2}{T} \cdot \frac{ \left(e^{j \omega_d T/2} - e^{-j \omega_d T/2}\right) /(2j)}{\left(e^{j \omega_d T/2} + e^{-j \omega_d T/2 }\right) / 2}\right) \ <math>
|
|
| <math>= H_a \left(j \frac{2}{T} \cdot \frac{ \sin(\omega_d T/2) }{ \cos(\omega_d T/2) }\right) \ <math>
|
|
| <math>= H_a \left(j \frac{2}{T} \cdot \tan \left( \omega_d \frac{T}{2} \right) \right) \ <math>
|
|
| <math>= H_a \left(j \omega_a \right) \ <math>
|
That is, the frequency mapping of the bilinear transform is
- <math> \omega_a = \frac{2}{T} \tan \left( \omega_d \frac{T}{2} \right) <math>
and the inverse mapping is
- <math> \omega_d = \frac{2}{T} \arctan \left( \omega_a \frac{T}{2} \right) <math>.
The discrete-time filter behaves at frequency <math>\omega \ <math> the same way that the continuous-time filter
behaves at frequency <math> (2/T) \tan(\omega T/2) \ <math>. Specifically, the gain and phase shift that the
discrete-time filter has at frequency <math>\omega \ <math> the same gain and phase shift that the continuous-time
filter has at frequency <math> (2/T) \tan(\omega T/2) \ <math>.
One can see that the entire continuous frequency range
- <math> -\infty \leq \omega_a \leq +\infty <math>
is mapped onto the fundamental frequency interval
- <math> -\frac{\pi}{T} \leq \omega_d \leq +\frac{\pi}{T}.<math>
The continuous-time filter frequency <math> \omega_a = 0 \ <math> corresponds to the discrete-time filter frequency
<math> \omega_d = 0 \ <math> and the continuous-time filter frequency <math> \omega_a = \pm \infty \ <math>
correspond to the discrete-time filter frequency <math> \omega_d = \pm \pi / T \ <math>.
One can also see that there is a nonlinear relationship between <math> \omega_a \ <math> and
<math> \omega_d \ <math>. This effect of the bilinear transform is called frequency warping.
The main advantage of the warping phenomenon is the absence of aliasing distortion of the frequency response
characteristic, such as observed with the impulse invariant method. It is necessary, however, to compensate for the
frequency warping by pre-warping the given frequency specifications of the continuous-time system. These pre-warped
specifications may then be used in the bilinear transform to obtain the desired discrete-time system.
|