The primary advantage of IIR filters over FIR
filters is that they typically meet a given set of specifications
with a much lower filter order than a corresponding FIR filter. Although
IIR filters have nonlinear phase, data processing within MATLAB® software
is commonly performed "offline," that is, the entire
data sequence is available prior to filtering. This allows for a noncausal,
zero-phase filtering approach (via the
which eliminates the nonlinear phase distortion of an IIR filter.
The classical IIR filters, Butterworth, Chebyshev Types I and II, elliptic, and Bessel, all approximate the ideal "brick wall" filter in different ways.
This toolbox provides functions to create all these types of classical IIR filters in both the analog and digital domains (except Bessel, for which only the analog case is supported), and in lowpass, highpass, bandpass, and bandstop configurations. For most filter types, you can also find the lowest filter order that fits a given filter specification in terms of passband and stopband attenuation, and transition width(s).
The direct filter design function
a filter with magnitude response approximating a desired function.
This is one way to create a multiband bandpass filter.
You can also use the parametric modeling or system identification functions to design IIR filters. These functions are discussed in Parametric Modeling.
The following table summarizes the various filter methods in the toolbox and lists the functions available to implement these methods.
Toolbox Filters Methods and Available Functions
|Filter Method||Description||Filter Functions|
Using the poles and zeros of a classical lowpass prototype filter in the continuous (Laplace) domain, obtain a digital filter through frequency transformation and filter discretization.
Complete design functions:
Order estimation functions:
Lowpass analog prototype functions:
Frequency transformation functions:
Filter discretization functions:
Design digital filter directly in the discrete time-domain by approximating a piecewise linear magnitude response.
Design lowpass Butterworth filters with more zeros than poles.
Find a digital filter that approximates a prescribed time or frequency domain response. (See System Identification Toolbox™ documentation for an extensive collection of parametric modeling tools.)
Time-domain modeling functions:
Frequency-domain modeling functions:
The principal IIR digital filter design technique this toolbox provides is based on the conversion of classical lowpass analog filters to their digital equivalents. The following sections describe how to design filters and summarize the characteristics of the supported filter types. See Special Topics in IIR Filter Design for detailed steps on the filter design process.
You can easily create a filter of any order with a lowpass, highpass, bandpass, or bandstop configuration using the filter design functions.
Filter Design Functions
Bessel (analog only)
Chebyshev Type I
Chebyshev Type II
By default, each of these functions
returns a lowpass filter; you need only specify the desired cutoff
Wn in normalized frequency (Nyquist frequency
= 1 Hz). For a highpass
'high' to the function's parameter
list. For a bandpass or bandstop filter, specify
a two-element vector containing the passband edge frequencies. Append
the bandstop configuration.
Here are some example digital filters:
[b,a] = butter(5,0.4); % Lowpass Butterworth [b,a] = cheby1(4,1,[0.4 0.7]); % Bandpass Chebyshev Type I [b,a] = cheby2(6,60,0.8,'high'); % Highpass Chebyshev Type II [b,a] = ellip(3,1,60,[0.4 0.7],'stop'); % Bandstop elliptic
[b,a] = butter(5,0.4,'s'); % Analog Butterworth filter
All filter design functions return a filter in the transfer
function, zero-pole-gain, or state-space linear system model representation,
depending on how many output arguments are present. In general, you
should avoid using the transfer function form because numerical problems
caused by roundoff errors can occur. Instead, use the zero-pole-gain
form which you can convert to a second-order section (SOS) form using
zp2sos and then use the SOS form to analyze
or implement your filter.
Note All classical IIR lowpass filters are ill-conditioned for extremely low cutoff frequencies. Therefore, instead of designing a lowpass IIR filter with a very narrow passband, it can be better to design a wider passband and decimate the input signal.
Order Estimation Function
Chebyshev Type I
Chebyshev Type II
These are useful in conjunction with the filter design functions.
Suppose you want a bandpass filter with a passband from 1000 to 2000
Hz, stopbands starting 500 Hz away on either side, a 10 kHz sampling
frequency, at most 1 dB of passband ripple, and at
least 60 dB of stopband attenuation. You can meet these specifications
by using the
butter function as follows.
[n,Wn] = buttord([1000 2000]/5000,[500 2500]/5000,1,60) [b,a] = butter(n,Wn);
n = 12 Wn = 0.1951 0.4080
An elliptic filter that meets the same requirements is given by
[n,Wn] = ellipord([1000 2000]/5000,[500 2500]/5000,1,60) [b,a] = ellip(n,1,60,Wn);
n = 5 Wn = 0.2000 0.4000
These functions also work with the other standard band configurations, as well as for analog filters.
The toolbox provides five different types of classical IIR filters, each optimal in some way. This section shows the basic analog prototype form for each and summarizes major characteristics.
The Butterworth filter provides the best Taylor series approximation to the ideal lowpass filter response at analog frequencies Ω = 0 and Ω = ∞; for any order N, the magnitude squared response has 2N – 1 zero derivatives at these locations (maximally flat at Ω = 0 and Ω = ∞). Response is monotonic overall, decreasing smoothly from Ω = 0 to Ω = ∞. at Ω = 1.
The Chebyshev Type I filter minimizes the absolute
difference between the ideal and actual frequency response over the
entire passband by incorporating an equal ripple
Rp dB in the passband. Stopband
response is maximally flat. The transition from passband to stopband is more rapid than for the Butterworth filter. at Ω = 1.
The Chebyshev Type II filter minimizes the absolute difference between the ideal and
actual frequency response over the entire stopband by incorporating
an equal ripple of
Rs dB in the stopband. Passband response is maximally flat.
The stopband does not approach zero as quickly as the type I filter (and does not approach zero at all for even-valued filter order n). The absence of ripple in the passband, however, is often an important advantage. at Ω = 1.
Elliptic filters are equiripple in
both the passband and stopband. They generally meet filter requirements
with the lowest order of any supported filter type. Given a filter
order n, passband ripple
decibels, and stopband ripple
Rs in decibels, elliptic
filters minimize transition width. at Ω = 1.
Analog Bessel lowpass filters have maximally flat group delay at zero frequency and retain nearly constant group delay across the entire passband. Filtered signals therefore maintain their waveshapes in the passband frequency range. Frequency mapped and digital Bessel filters, however, do not have this maximally flat property; this toolbox supports only the analog case for the complete Bessel filter design function.
Bessel filters generally require a higher filter order than other filters for satisfactory stopband attenuation. at Ω = 1 and decreases as filter order n increases.
The lowpass filters shown above were created with the analog
[z,p,k] = ellipap(5,0.5,20); w = logspace(-1,1,1000); h = freqs(k*poly(z),poly(p),w); semilogx(w,abs(h)), grid xlabel('Frequency (rad/s)') ylabel('Magnitude')
This toolbox uses the term direct methods to
describe techniques for IIR design that find a filter based on specifications
in the discrete domain. Unlike the analog prototyping method, direct
design methods are not constrained to the standard lowpass, highpass,
bandpass, or bandstop configurations. Rather, these functions design filters with an arbitrary, perhaps multiband, frequency response. This section discusses the
yulewalk function, which is intended
specifically for filter design; Parametric Modeling discusses other
methods that may also be considered direct, such as Prony's method,
Linear Prediction, the Steiglitz-McBride method, and inverse frequency
designs recursive IIR digital filters by fitting a specified frequency
yulewalk's name reflects
its method for finding the filter's denominator coefficients: it finds
the inverse FFT of the ideal desired magnitude-squared response and
solves the modified Yule-Walker equations using the resulting
autocorrelation function samples. The statement
[b,a] = yulewalk(n,f,m)
returns row vectors
n+1 numerator and denominator coefficients
nth-order IIR filter whose frequency-magnitude
characteristics approximate those given in vectors
a vector of frequency points ranging from 0 to 1, where 1 represents
the Nyquist frequency.
m is a vector containing
the desired magnitude response at the points in
describe any piecewise linear shape magnitude response, including a multiband response. The
FIR counterpart of this function is
which also designs a filter based on an arbitrary piecewise linear
magnitude response. See FIR Filter Design for details.
not accept phase information, and no statements are made about the
optimality of the resulting filter.
Design a multiband filter with
plot the desired and actual frequency response:
m = [0 0 1 1 0 0 1 1 0 0]; f = [0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 1]; [b,a] = yulewalk(10,f,m); [h,w] = freqz(b,a,128) plot(f,m,w/pi,abs(h))
The toolbox function
you to design generalized
Butterworth filters, that is, Butterworth filters with differing numbers
of zeros and poles. This is desirable in some implementations where
poles are more expensive computationally than zeros.
maxflat is just like the
butter function, except that it you can
specify two orders (one for the numerator and
one for the denominator) instead of just one. These filters are maximally flat. This means that the resulting
filter is optimal for any numerator and denominator orders, with the
maximum number of derivatives at 0 and the Nyquist
frequency ω = π both set
For example, when the two orders are the same,
the same as
[b,a] = maxflat(3,3,0.25)
b = 0.0317 0.0951 0.0951 0.0317 a = 1.0000 -1.4590 0.9104 -0.1978
[b,a] = butter(3,0.25)
b = 0.0317 0.0951 0.0951 0.0317 a = 1.0000 -1.4590 0.9104 -0.1978
maxflat is more
versatile because it allows you to design a filter with more zeros
[b,a] = maxflat(3,1,0.25)
b = 0.0950 0.2849 0.2849 0.0950 a = 1.0000 -0.2402
The third input to
the half-power frequency, a frequency between
0 and 1 with a desired magnitude
response of .
You can also design linear phase filters that have the maximally
flat property using the
ans = 0.0331 0.2500 0.4337 0.2500 0.0331