Kaiser window FIR filter design estimation parameters
[n,Wn,beta,ftype] = kaiserord(f,a,dev)
[n,Wn,beta,ftype] = kaiserord(f,a,dev,fs)
c = kaiserord(f,a,dev,fs,'cell
')
kaiserord
returns a filter order n
and beta
parameter
to specify a Kaiser window for use with the fir1
function.
Given a set of specifications in the frequency domain, kaiserord
estimates
the minimum FIR filter order that will approximately meet the specifications. kaiserord
converts
the given filter specifications into passband and stopband ripples
and converts cutoff frequencies into the form needed for windowed
FIR filter design.
[n,Wn,beta,ftype] = kaiserord(f,a,dev)
finds
the approximate order n
, normalized frequency band
edges Wn
, and weights that meet input specifications f
, a
,
and dev
. f
is a vector of band
edges and a
is a vector specifying the desired
amplitude on the bands defined by f
. The length
of f
is twice the length of a
,
minus 2. Together, f
and a
define
a desired piecewise constant response function. dev
is
a vector the same size as a
that specifies the
maximum allowable error or deviation between the frequency response
of the output filter and its desired amplitude, for each band. The
entries in dev
specify the passband ripple and
the stopband attenuation. You specify each entry in dev
as
a positive number, representing absolute filter gain (not in decibels).
Note
If, in the vector |
fir1
can use the resulting
order n
, frequency vector Wn
,
multiband magnitude type ftype
, and the Kaiser
window parameter beta
. The ftype
output
argument is intended for use with fir1
;
it is equal to 'high'
for a highpass filter and 'stop'
for
a bandstop filter. For multiband filters, it can be equal to 'DC-0'
when
the first band is a stopband (starting at f = 0) or 'DC-1'
when
the first band is a passband.
To design an FIR filter b
that approximately
meets the specifications given by kaiser
parameters f
, a
,
and dev
, use the following command.
b = fir1(n,Wn,kaiser(n+1,beta),ftype,'noscale')
[n,Wn,beta,ftype] = kaiserord(f,a,dev,fs)
uses
a sampling frequency fs
in Hz. If you don't specify
the argument fs
, or if you specify it as the empty
vector []
, it defaults to 2 Hz,
and the Nyquist frequency is 1 Hz. You can use this
syntax to specify band edges scaled to a particular application's
sampling frequency. The frequency band edges in f
must
be from 0 to fs
/2.
c = kaiserord(f,a,dev,fs,'
is
a cell-array whose elements are the parameters to cell
')fir1
.
Note
In some cases, Results are inaccurate if the cutoff frequencies are near 0
or the Nyquist frequency, or if |
Be careful to distinguish between the meanings of filter length and filter order. The filter length is the number of impulse response samples in the FIR filter. Generally, the impulse response is indexed from n = 0 to n = L–1 where L is the filter length. The filter order is the highest power in a z-transform representation of the filter. For an FIR transfer function, this representation is a polynomial in z, where the highest power is z^{L}^{–1} and the lowest power is z^{0}. The filter order is one less than the length (L–1) and is also equal to the number of zeros of the z polynomial.
kaiserord
uses empirically derived formulas
for estimating the orders of lowpass filters, as well as differentiators
and Hilbert transformers. Estimates for multiband filters (such as
bandpass filters) are derived from the lowpass design formulas.
The design formulas that underlie the Kaiser window and its application to FIR filter design are
$$\beta =\{\begin{array}{ll}0.1102(\alpha -8.7),\hfill & \alpha >50\hfill \\ 0.5842{(\alpha -21)}^{0.4}+0.07886(\alpha -21),\hfill & 21\le \alpha \le 50\hfill \\ 0,\hfill & \alpha <21\hfill \end{array}$$
where α = –20log_{10}δ is the stopband attenuation expressed in decibels (recall that δ_{p} = δ_{s} is required).
The design formula is
$$n=\frac{\alpha -7.95}{2.285(\Delta \omega )}$$
where n is the filter order and Δω is the width of the smallest transition region.
[1] Kaiser, James F. "Nonrecursive Digital Filter Design Using the I_{0}-sinh Window Function." Proceedings of the 1974 IEEE International Symposium on Circuits and Systems. 1974, pp. 20–23.
[2] Digital Signal Processing Committee of the IEEE Acoustics, Speech, and Signal Processing Society, eds. Selected Papers in Digital Signal Processing. Vol. II. New York: IEEE Press, 1976, pp. 123–126.
[3] Oppenheim, Alan V., Ronald W. Schafer, and John R. Buck. Discrete-Time Signal Processing. Upper Saddle River, NJ: Prentice Hall, 1999.