fir1
Create a digital FIR filter.
Syntax
[b] = fir1(n,w)
[b] = fir1(n,w,type)
[b] = fir1(n,w,type,window)
[b] = fir1(n,w,type,window,noscale)
Inputs
- n
- The filter order.
- w
- A scalar specifying the cutoff frequency of a low or high pass filter, or a two-element vector specifying the cutoff frequencies of a bandpass or band stop filter, or for a vector containing cutoff frequencies of a multiband filter.
- type
- The band type of the filter. The valid options are:
- 'low' for a low pass filter
- 'high' for a high pass filter
- 'bandpass' for a bandpass filter
- 'stop' for a band stop filter
- 'DC-0' for a multiband filter with a DC value of 0
- 'DC-1' for a multiband filter with a DC value of 1
- window
- A window vector of size n+1. If omitted or [], a Hamming window is used.
- noscale
- Set to 'noscale' if the output is not to be normalized. When
omitted, the gain is set to 1 as follows:
- At DC for 'low'
- At the Nyquist frequency for 'high'
- At the center of the pass band for 'bandpass'
- At DC for 'stop'
- At the center of the first pass band for 'DC-0'
- At DC for 'DC-1'
Outputs
- b
- The polynomial coefficients of the filter.
Example
Plot the magnitude response in decibels for a 50th order FIR low pass digital filter with a 250 Hz cutoff frequency and a 2000 Hz sampling frequency.
w = hamming(51, 'symmetric');
fc = 250;
fs = 2000;
num = fir1(50,fc/(fs/2),'low',w);
[h,f] = freqz(num,1,[0:5:1000],fs);
plot(f,20*log10(abs(h)));
Example 2
Plot the magnitude response in decibels for a 50th order FIR multiband digital filter with passbands of [300,400], [590,610], [775,825], and a 2000 Hz sampling frequency.
w = hamming(51, 'symmetric');
fc = [300,400,590,610,775,825];
fs = 2000;
num = fir1(50,fc/(fs/2),'DC-0',w);
[h,f] = freqz(num,1,[0:5:1000],fs);
plot(f,20*log10(abs(h)));
Comments
The filter order must be even for highpass or band stop filters. The function increments an invalid odd order automatically when the default window is used.