用matlab绘制系统函数的DTFT

freqz函数( frequency response of digital filter)

对于一个输入离散序列,输出离散序列的离散时间系统,我们可以用它的系统函数H(Z)来描述这个系统。求这个系统函数的DTFT,可以得到这个系统的幅频响应相频响应

一般形式:[h,w]=freqz(b,a,n)

  • b:H(z)分子多项式构成的数组
  • a:H(z)分母多项式构成的数组
  • n:0~Π内取样的点数,默认512点
  • h:复数形式的频率响应数组
  • w:对应于h的各个数字角频率数组
    例1:
    求系统函数H (z) = (0.8 - 0.44 z^-1 + 0.36 z^-2 + 0.02 z^-3)/(1 + 0.7 z^-1 - 0.45 z^-2 - 0.3 z^-3)的DTFT
b=[0.8,-0.44,0.36,0.02];
a=[1,0.7,-0.45,-0.3];
[h,w]=freqz(b,a);

subplot(2,2,1)
plot(w/pi,real(h));grid
title('实部')
xlabel('\omega/\pi');ylabel('幅度')

subplot(2,2,2)
plot(w/pi,imag(h));grid
title('虚部')
xlabel('\omega/\pi');ylabel('幅度')

subplot(2,2,3)
plot(w/pi,abs(h));grid
title('幅度谱')
xlabel('\omega/\pi');ylabel('幅度')

subplot(2,2,4)
plot(w/pi,angle(h));grid
title('相位谱')
xlabel('\omega/\pi');ylabel('相位(rad)')

用matlab绘制系统函数的DTFT_第1张图片
例2:
给出H(Z)=1/(1-αz^-1)的幅频曲线,α取0.9或-0.9

b=[1];a1=[1,-0.9];a2=[1,0.9];
w=linspace(0,2*pi,512);
h1=freqz(b,a1,w);
h2=freqz(b,a2,w);
plot(w/pi,abs(h1),w/pi,abs(h2),':');
xlabel('\omega/\pi');ylabel('幅度');
legend('\alpha=0.9','\alpha=-0.9');

用matlab绘制系统函数的DTFT_第2张图片

你可能感兴趣的:(matlab,dsp,matlab,数字信号处理)