使用Matlab提供的freqz()函数可计算离散系统频率响应的抽样值.
一般情况下, 函数freqz()的返回值为复数, 使用Matlab提供的abs()、angle()函数可分别计算其幅度、相位.
[程序设计代码(计算系统的幅度响应)]
% H(z)的分子: (0.5009 - 1.0019z^-1 + 0.5009z^-2)(0.5320 + 1.0640z^-1 + 0.5320z^-2)
% H(z)的分母: (1 - 0.8519z^-1 + 0.4167z^-2)/(1 + 0.8519z^-1 + 0.4167z^-2)
% 计算离散系统的幅度相应
b1 = [0.5009 -1.0019 0.5009];
b2 = [0.5320 1.0640, 0.5320];
a1 = [1.0000 -0.8519 0.4167];
a2 = [1.0000 0.8519 0.4167];
b = conv(b1, b2);% 计算H(z)的分子多项式
a = conv(a1, a2);% 计算H(z)的分母多项式
w = linspace(0, pi, 512);
H = freqz(b, a, w);
plot(w / pi, abs(H));
%
ylabel('幅度');
xlabel('normalized frequency');
[仿真结果]