**IIR (Infinite Impulse Response) filters** are a type of digital filter
that use feedback to create a response. They are widely used in digital
signal processing due to their simplicity, efficiency, and effectiveness
in applications such as audio processing, image processing, and
telecommunications.

The **frequency response** of an IIR filter describes
how the filter changes the amplitude and phase of a sinusoidal signal at
different frequencies. This response can be visualized using a
frequency response plot, which shows the magnitude and phase of the
filter as a function of frequency. The shape of the frequency response
depends on the filter design parameters, such as the filter coefficients
and filter order. By analyzing the frequency response, it is possible
to determine the filter's bandwidth, cutoff frequency, and resonance
frequency, among other characteristics.

The following **MATLAB code** computes the magnitude and phase response of an IIR filter using the "freqz" and "grpdelay" functions. The coefficients of the filter are defined in the "b" and "a" arrays(see how to calculate IIR filter coefficients in Matlab).

```
%Matlab program for IIR Filter Magnitude and Phase Response
b=[0.0532 0.3725 1.1176 1.8626 1.8626 1.1176 0.3725 0.0532];
a=[1.0000 1.5473 2.1992 1.2240 0.8269 0.0347 0.0587 -0.0790];
[h,w] = freqz(b,a,256);
H=abs(h);
HdB=20*log10(H);
ph=angle(h);
Ph=unwrap(ph);
gd=grpdelay(b,a,256);
subplot(1,2,1)
plot(w,H);
grid
title('Magnitude of the frequency response')
ylabel('Magnitude')
xlabel('Normalized frequency')
subplot(1,2,2)
plot(w,HdB);
grid
title('Magnitude in dB of the frequency response')
ylabel('Magnitude in dB')
xlabel('Normalized frequency')
figure(2)
subplot(1,2,1)
plot(w,ph);grid
title('Phase response of the filter')
ylabel('Phase angle in radians')
xlabel('Normalized frequency')
subplot(1,2,2)
plot(w,Ph);grid
title('Unwrapped phase response filter')
ylabel('Phase angle in radians')
xlabel('Normalized frequency')
```

First, the code computes the frequency response "h" and the frequency vector "w" using the "freqz" function, with 256 frequency points. Then, it computes the magnitude response "H" and the magnitude in decibels "HdB" using the "abs" and "log10" functions.

The code also computes the phase response "ph" using the "angle" function, and then unwraps the phase using the "unwrap" function to obtain the phase response "Ph".

Finally, the group delay "gd" of the filter is computed using the "grpdelay" function. The magnitude and phase responses, as well as the unwrapped phase response, are plotted in separate subplots using the "plot" function, along with appropriate axis labels and titles.

The following shows the resulting magnitude response, phase response and the phase angle plot.

**References**

[1] FIR Filter Frequency Response Matlab Program

[2] Low-Pass Filter Design and Analysis in MATLAB

[3] FIR filter design by frequency sampling

[4] Impulse Invariant Transformation Filter Design Example Work

[5] DFT in Matlab without built-in function