firls() - Signal Processing
firls designs a linear-phase FIR filter
that minimizes the weighted, integrated squared error between an ideal
piecewise linear function and the magnitude response of the filter
over a set of desired frequency bands.b = firls(n,f,a) returns
row vector b containing the n+1 coefficients
of the order n FIR filter whose frequency-amplitude
characteristics approximately match those given by vectors f and a.
The output filter coefficients, or "taps," in b obey
the symmetry relation.b(k)=b(n+2−k), k=1,...,n+1These are type I (n odd) and type II (n even)
linear-phase filters. Vectors f and a specify
the frequency-amplitude characteristics of the filter:f is a vector of pairs of frequency
points, specified in the range between 0 and 1, where
1 corresponds to the Nyquist frequency. The frequencies must be in
increasing order. Duplicate frequency points are allowed and, in fact,
can be used to design a filter exactly the same as those returned
by the fir1 and fir2 functions with a rectangular (rectwin) window.a is a vector containing the desired
amplitude at the points specified in f. The desired amplitude function at frequencies between pairs
of points (f(k), f(k+1))
for k odd is the line segment connecting the points
and (f(k+1), a(k+1)).The desired amplitude function at frequencies between pairs
of points (f(k), f(k+1))
for k even is unspecified. These are transition
or "don't care" regions.f and a are
the same length. This length must be an even number.firls always uses an even filter order for
configurations with a passband at the Nyquist frequency. This is because
for odd orders, the frequency response at the Nyquist frequency is
necessarily 0. If you specify an odd-valued n, firls increments
it by 1.The figure below illustrates the relationship between the f and a vectors
in defining a desired amplitude response.
b = firls(n,f,a,w) uses the weights
in vector w to weight the fit in each frequency
band. The length of w is half the length of f and a,
so there is exactly one weight per band. b = firls(n,f,a,'ftype') andb = firls(n,f,a,w,'ftype') specify
a filter type, where 'ftype' is: 'hilbert' for linear-phase filters
with odd symmetry (type III and type IV). The output coefficients
in b obey the relationb(k)=−b(n+2−k), k=1,…,n+1.This class of filters
includes the Hilbert
transformer, which has a desired amplitude of 1 across the entire
band. 'differentiator' for
type III and type IV filters, using a special weighting technique. For
nonzero amplitude bands, the integrated squared error has a weight
of (1/f)2 so that the
error at low frequencies is much smaller than at high frequencies. For
FIR differentiators, which have an amplitude characteristic proportional
to frequency, the filters minimize the relative integrated squared
error (the integral of the square of the ratio of the error to the
b = firls(n,f,a)b = firls(n,f,a,w)b = firls(n,f,a,'ftype')b = firls(n,f,a,w,'ftype')
F must be even length.
F and A must be equal lengths.
Requires symmetry to be 'hilbert' or 'differentiator'.
Requires one weight per band.
Frequencies in F must be nondecreasing.
Frequencies in F must be in range [0,1].
Output / Return Value
Alternatives / See Also