11.4 IIR Filter Design 661
− 1
0
1
2
Real part
Imaginary
part
− 5 05
− 2
− 1
0
1
2
t
x(
t)
− 1
−0.5
0
0.5
1
t
y(
t)
0 0.^020. 04 0. 06 0. 08 0. 1
0 0. 02 0. 04 0. 06 0. 08 0. 1
(b)
0
0. 5
1
|H
(f
)|
0 50 100 150 200 250
(^0050100150200250)
2
4
<H
(f
)
f[Hz]
(a)
FIGURE 11.12
Bilinear transformation of a high-pass analog filter into a discrete filter with half-power frequenciesωhp=π/ 2 or
fhp=125 Hz. (a) Poles and zeros and magnitude and phase responses of the discrete filter. (b) The analog input
and output obtained using the MATLAB functionplotto interpolate the sampled signalx(nTs)and the output of
the discrete filtery(nTs)intox(t)andy(t).
so we multiply the normalized discrete frequencyω/πbyfs/ 2 =250, resulting in a maximum
frequency of 250 Hz. The half-power frequency in hertz is thus 125 Hz. The magnitude and the
phase responses ofH(z)are shown in Figure 11.12. Notice that phase is approximately linear in
the passband, despite the fact that no phase specifications are considered.
Since the maximum frequency ofx(t)is 250 Hz we chooseTs= 1 /500. As a high-pass filter, when
we inputx(nTs)intoH(z)its low-frequency component cos( 40 πnTs)is attenuated. The input and
corresponding output of the filter are shown in Figure 11.12. n
Remarks
n The design is simplified by giving a desired half-power frequencyωhp, as we then only need to calculate
the order of the filter by using the stopband constraint. In this case, by settingαmax= 3 dB andωp=ωhp
one could also use the lower equation in Equation (11.28) to find N.
n A very important consequence of using the bilinear transformation is that the resulting transfer function
HN(z)is guaranteed to be BIBO stable. This transformation maps the poles of a stable filter HN(s)in
the left-hand s-plane into poles inside the unit circle corresponding to HN(z), making the discrete filter
stable.
n The bilinear transformation creates a pole and a zero in the z-plane for each pole in the s-plane. Analytic
calculation of the poles of HN(z)is not as important as in the analog case. The MATLAB functionzplane
can be used to plot its poles and zeros, and the functionrootscan be used to find the values of the poles
and zeros.