Signal Processing Toolbox Previous page   Next Page
firls

Least square linear-phase FIR filter design

Syntax

Description

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.

These 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:

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.

The f vector is 0, .3, .4, .6, .7, and .9 and is plotted on the x-axis. The a vector is 0, 1, 0, 0, .5, and .5 and is plotted on the y-axis. For normalized frequency from 0 to 0.3, the desired amplitude rises linearly from 0 to 1.0. A don't care region occurs from frequency 0.3 to 0.4. From frequency 0.4 to 0.6, the amplitude is zero. Another don't care region occurs from frequency 0.6 to 0.7. From frequency 0.7 to 0.9, the amplitude is 0.5. A final don't care region occurs from frequency 0.9 to 1.0 (Nyquist).



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') and

b = firls(n,f,a,w,'ftype') specify a filter type, where 'ftype' is:

Examples

Example 1

Design an order 255 lowpass filter with transition band:

Example 2

Design a 31 coefficient differentiator:

An ideal differentiator has the response D(w) = jw. The amplitudes include a pi multiplier because the frequencies are normalized by pi.

Example 3

Design a 24th-order anti-symmetric filter with piecewise linear passbands and plot the desired and actual frequency response:

Algorithm

Reference [1] describes the theoretical approach behind firls. The function solves a system of linear equations involving an inner product matrix of size roughly n/2 using the MATLAB \ operator.

This function designs type I, II, III, and IV linear-phase filters. Type I and II are the defaults for n even and odd respectively, while the 'hilbert' and 'differentiator' flags produce type III (n even) and IV (n odd) filters. The various filter types have different symmetries and constraints on their frequency responses (see [2] for details).

Linear Phase Filter Type
Filter Order
Symmetry of Coefficients
Response H(f), f = 0
Response H(f), f = 1 (Nyquist)
Type I
Even
even:


No restriction
No restriction
Type II
Odd
No restriction
H(1) = 0
Type III
Even
odd:


H(0) = 0
H(1) = 0
Type IV
Odd
H(0) = 0
No restriction

Diagnostics

One of the following diagnostic messages is displayed when an incorrect argument is used:

A more serious warning message is

This tends to happen when the product of the filter length and transition width grows large. In this case, the filter coefficients b might not represent the desired filter. You can check the filter by looking at its frequency response.

See Also

fir1, fir2, firrcos, firpm

References

[1] Parks, T.W., and C.S. Burrus, Digital Filter Design, John Wiley & Sons, 1987, pp. 54-83.

[2] Oppenheim, A.V., and R.W. Schafer, Discrete-Time Signal Processing, Prentice-Hall, 1989, pp. 256-266.


Previous page  fircls1 firpm Next page

© 1994-2005 The MathWorks, Inc.