| Signal Processing Toolbox | ![]() |
Design a frequency sampling-based finite impulse response filter
Syntax
b=fir2(n,f,m) b=fir2(n,f,m,window) b=fir2(n,f,m,npt) b=fir2(n,f,m,npt,window) b=fir2(n,f,m,npt,lap) b=fir2(n,f,m,npt,lap,window)
Description
fir2 designs frequency sampling-based digital FIR filters with arbitrarily shaped frequency response.
Note
Use fir1 for windows-based standard lowpass, bandpass, highpass, and bandstop configurations.
|
b returns row vector = fir2(n,f,m)
b containing the n+1 coefficients of an order n FIR filter. The frequency-magnitude characteristics of this filter match those given by vectors f and m:
f is a vector of frequency points in the range from 0 to 1, where 1 corresponds to the Nyquist frequency. The first point of f must be 0 and the last point 1. The frequency points must be in increasing order.
m is a vector containing the desired magnitude response at the points specified in f.
f and m must be the same length.
Use plot(f,m) to view the filter shape.
The output filter coefficients, b, are ordered in descending powers of z.
fir2 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, fir2 increments it by 1.
b uses the window specified in the column vector = fir2(n,f,m,window)
window. The vector window must be n+1 elements long. If no window is specified, fir2 uses a Hamming window (see hamming) of length n+1.
specifies the number of points, b = fir2(n,f,m,npt,window)
npt, for the grid onto which fir2 interpolates the frequency response, without or with a window specification.
b specify the size of the region, = fir2(n,f,m,npt,lap,window)
lap, that fir2 inserts around duplicate frequency points, with or without a window specification.
See the "Algorithm" section for more on npt and lap.
Examples
Design a 30th-order lowpass filter and overplot the desired frequency response with the actual frequency response:
f=[0 0.6 0.6 1]; m=[1 1 0 0]; b=fir2(30,f,m); [h,w]=freqz(b,1,128); plot(f,m,w/pi,abs(h)) legend('Ideal','fir2 Designed') title('Comparison of Frequency Response Magnitudes')
Algorithm
The desired frequency response is interpolated onto a dense, evenly spaced grid of length npt. npt is 512 by default. If two successive values of f are the same, a region of lap points is set up around this frequency to provide a smooth but steep transition in the requested frequency response. By default, lap is 25. The filter coefficients are obtained by applying an inverse fast Fourier transform to the grid and multiplying by a window; by default, this is a Hamming window.
See Also
butter, cheby1, cheby2, ellip, fir1, maxflat, remez, yulewalk
| fir1 | fircls | ![]() |