Signal Processing Toolbox |
Parks-McClellan optimal FIR filter order estimation
Syntax
Description
[n,fo,ao,w]
finds the approximate order, normalized frequency band edges, frequency band amplitudes, and weights that meet input specifications =
firpmord(f,a,dev)
f
, a
, and dev
.
f
is a vector of frequency band edges (between 0 and fs/2, where fs is the sampling frequency), and a
is a vector specifying the desired amplitude on the bands defined by f
. The length of f
is two less than twice the length of a
. The desired function is piecewise constant.
dev
is a vector the same size as a
that specifies the maximum allowable deviation or ripples between the frequency response and the desired amplitude of the output filter for each band.
Use firpm
with the resulting order n
, frequency vector fo
, amplitude response vector ao
, and weights w
to design the filter b
which approximately meets the specifications given by firpmord
input parameters f
, a
, and dev
.
[n,fo,ao,w]
specifies a sampling frequency =
firpmord(f,a,dev,fs)
fs
. fs
defaults to 2 Hz, implying a Nyquist frequency of 1 Hz. You can therefore specify band edges scaled to a particular application's sampling frequency.
In some cases firpmord
underestimates the order n
. If the filter does not meet the specifications, try a higher order such as n+1
or n+2
.
c
generates a cell-array whose elements are the parameters to =
firpmord(f,a,dev,fs,'
cell
')
firpm
.
Example 1
Design a minimum-order lowpass filter with a 500 Hz passband cutoff frequency and 600 Hz stopband cutoff frequency, with a sampling frequency of 2000 Hz, at least 40 dB attenuation in the stopband, and less than 3 dB of ripple in the passband:
rp=
3; % Passband ripple rs=
40; % Stopband ripple fs=
2000; % Sampling frequency f=
[500 600]; % Cutoff frequencies a=
[1 0]; % Desired amplitudes % Compute deviations dev=
[(10^(rp/20)-1)/(10^(rp/20)+1) 10^(-rs/20)]; [n,fo,ao,w]=
firpmord(f,a,dev,fs); b=
firpm(n,fo,ao,w); freqz(b,1,1024,fs); title('Lowpass Filter Designed to Specifications');
Note that the filter falls slightly short of meeting the stopband attenuation and passband ripple specifications. Using n+1
in the call to firpm
instead of n
achieves the desired amplitude characteristics.
Example 2
Design a lowpass filter with a 1500 Hz passband cutoff frequency and 2000 Hz stopband cutoff frequency, with a sampling frequency of 8000 Hz, a maximum stopband amplitude of 0.1, and a maximum passband error (ripple) of 0.01:
Algorithm
firpmord
uses the algorithm suggested in [1]. This method is inaccurate for band edges close to either 0 or the Nyquist frequency (fs/2
).
See Also
buttord
, cheb1ord
, cheb2ord
, ellipord
, kaiserord
, firpm
References
[1] Rabiner, L.R., and O. Herrmann, "The Predictability of Certain Optimum Finite Impulse Response Digital Filters," IEEE Trans. on Circuit Theory, Vol. CT-20, No. 4 (July 1973), pp. 401-408.
[2] Rabiner, L.R., and B. Gold. Theory and Application of Digital Signal Processing. Englewood Cliffs, NJ: Prentice-Hall, 1975, pp. 156-157.
firpm | firrcos |
© 1994-2005 The MathWorks, Inc.