matlab编程绘制IIR的相频响应图
时间: 2023-07-26 10:46:48 浏览: 97
在 MATLAB 中,可以使用 `freqz` 函数来绘制 IIR 滤波器的频率和相位响应图。下面是一个例子:
```matlab
% 设计IIR低通滤波器
fs = 1000; % 采样频率
fc = 50; % 截止频率
Wn = fc/(fs/2); % 归一化截止频率
[b,a] = butter(4,Wn,'low'); % 4阶Butterworth低通滤波器
% 绘制相频响应图
[h,w] = freqz(b,a,1024,fs);
figure;
subplot(2,1,1);
plot(w,20*log10(abs(h))); % 幅频响应
title('IIR低通滤波器幅频响应');
xlabel('频率(Hz)');
ylabel('幅度(dB)');
subplot(2,1,2);
plot(w,angle(h)); % 相频响应
title('IIR低通滤波器相频响应');
xlabel('频率(Hz)');
ylabel('相位(弧度)');
```
以上代码中,首先使用 `butter` 函数设计了一个归一化截止频率为 `Wn` 的 4 阶 Butterworth 低通滤波器,得到滤波器的系数 `b` 和 `a`。然后使用 `freqz` 函数计算滤波器的频率响应 `h` 和频率轴 `w`,并用 `subplot` 函数将幅频响应和相频响应图绘制在同一个窗口中。其中,幅频响应使用 `20*log10(abs(h))` 计算,相频响应使用 `angle(h)` 计算,分别使用 `plot` 函数绘制。最后,使用 `title`、`xlabel` 和 `ylabel` 函数给图像添加标题和坐标轴标签。
阅读全文