给出完整的 MATLAB代码(如使用注释,请使用中文注释):给定一因果系统 H(z)=(1+2^(1/2)*z^(-1)+1)/(1-0.67*z^(-1)+0.9*z^(-2)),求出并绘制 H(z)的幅频响应与相频响应,并适当标注横纵坐标及图形。
时间: 2024-03-25 07:38:27 浏览: 143
用matlab求频率响应
4星 · 用户满意度95%
以下是所需的 MATLAB 代码:
```matlab
% 定义系统函数
num = [1, 2^(1/2), 1+2^(1/2)];
den = [1, -0.67, 0.9];
H = tf(num, den);
% 绘制幅频响应
w = linspace(0, pi, 1000);
Hw = freqz(num, den, w);
magH = abs(Hw);
plot(w/pi, magH);
title('幅频响应');
xlabel('频率 (π rad/sample)');
ylabel('|H(e^{jω})|');
% 绘制相频响应
phsH = angle(Hw);
plot(w/pi, phsH);
title('相频响应');
xlabel('频率 (π rad/sample)');
ylabel('∠H(e^{jω})');
```
解释:
首先,我们将系统函数定义为 `num` 和 `den`,并使用 `tf` 函数创建一个传输函数对象 `H`。接下来,我们使用 `freqz` 函数计算幅频响应和相频响应,并使用 `plot` 函数绘制图形。在绘制幅频响应时,我们使用 `abs` 函数计算幅值,然后将频率单位转换为 π rad/sample,使用 `xlabel`、`ylabel` 和 `title` 函数添加标签和标题。在绘制相频响应时,我们使用 `angle` 函数计算相位,然后使用相同的方法添加标签和标题。
阅读全文