Parks-McClellan optimal FIR filter order estimation

`[n,fo,ao,w] = firpmord(f,a,dev)`

[n,fo,ao,w] = firpmord(f,a,dev,fs)

c = firpmord(f,a,dev,fs,'cell')

`[n,fo,ao,w] = firpmord(f,a,dev)`

finds
the approximate order, normalized frequency band edges, frequency
band amplitudes, and weights that meet input specifications `f`

, `a`

,
and `dev`

.

`f`

is a vector of frequency band edges (between 0 and*F*_{s}/2, where*F*_{s}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`

.

b = firpm(n,fo,ao,w)

`[n,fo,ao,w] = firpmord(f,a,dev,fs)`

specifies a sampling frequency `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.

`c = firpmord(f,a,dev,fs,'cell')`

generates
a cell-array whose elements are the parameters to `firpm`

.

In some cases, `firpmord`

underestimates or
overestimates the order `n`

. If the filter does not
meet the specifications, try a higher order such as `n+1`

or `n+2`

.

`firpmord`

uses the algorithm suggested in [1]. This method is inaccurate for band
edges close to either 0 or the Nyquist frequency, `fs/2`

.

[1] Rabiner, Lawrence R., and Otto Herrmann.
“The Predictability of Certain Optimum Finite-Impulse-Response
Digital Filters.” *IEEE ^{®} Transactions on Circuit
Theory*. Vol. 20, Number 4,
1973, pp. 401–408.

[2] Rabiner, Lawrence R., and Bernard Gold. *Theory
and Application of Digital Signal Processing.* Englewood
Cliffs, NJ: Prentice-Hall, 1975, pp. 156–157.