A Finite Impulse Response (FIR) filter is a type of digital filter that uses a finite number of past input samples to produce a filtered output. FIR filters are characterized by their impulse response, which is finite in length, and therefore, the filter is always stable. FIR filters can be designed to have linear phase response, which means that the phase shift introduced by the filter is proportional to the frequency.
The transfer function equation of a general digital filter is given by the following equation:
\( H(z)=\frac{\sum_{k=0}^{M-1}b_{k}z^{-k}}{\sum_{k=0}^{N-1}a_{k}z^{-k}} \) ---->(1)
or, \( H(z) = \frac{b_0 + b_1 z^{-1} + b_2 z^{-2} + ... + b_n z^{-n}}{a_0 + a_1 z^{-1} + a_2 z^{-2} + ... + a_n z^{-n}}\)
The frequency response of an FIR filter can be obtained by taking the discrete Fourier transform of its impulse response. The frequency response of an FIR filter is a function of the normalized frequency and can be visualized as a plot of magnitude and phase response. The magnitude response of an FIR filter can be used to determine the frequency selectivity of the filter, while the phase response is important for preserving the shape of the signal waveform.
The following MATLAB program calculates the magnitude and phase response of a Finite Impulse Response (FIR) filter.
% Matlab program for FIR Filter Magnitude and Phase Response b=[1.0 0.8 0.6 0.4 0.6 0.8 1.0]; [h,w]=freqz(b,1,256,'whole'); H=abs(h); ph=angle(h); plot(w,H);grid title('Magnitude of the FIR filter') ylabel('Magnitude') xlabel('Normalized frequency from 0 to 2*pi') figure plot(w,ph); grid title('Phase response of the FIR filter') ylabel('Phase angle in radians') xlabel('Normalized frequency')
The coefficients of the filter(see how to calculate IIR filter coefficients in Matlab) are specified in the variable b
. The freqz
function is used to calculate the frequency response of the filter. The
function takes in the filter coefficients, 1 as the denominator, and
256 as the number of frequency points. The 'whole'
option
specifies that the frequency response should be calculated for
frequencies from 0 to 2π. The magnitude and phase response are then
calculated using the abs
and angle
functions respectively. Finally, the plot
function is used to plot the magnitude and phase response of the filter versus normalized frequency. The grid
function is used to show a grid in the plot. The magnitude response
plot shows the gain of the filter at different frequencies, while the
phase response plot shows the phase shift introduced by the filter at
different frequencies.
Below are the frequency response graph showing magnitude response and phase response graphs.
References
[1] Low-Pass Filter Design and Analysis in MATLAB
[2] IIR Filter Frequency Response Matlab Code
[3] Impulse Invariant Transformation Filter Design Example Work