分为两大部分,1是计算系统的幅度响应和相位响应,2是计算系统的零点、极点。
举个例子,如果系统的差分方程为:
y(n)-0.53y(n-1)+0.73y(n-2) = 0.14[x(n)-x(n-2)]
matlab提供了计算频率响应的函数freqz,使用时只用输入传输函数的系数即可:
a = [1,-0.53,0.73];
b = [1,0,-1];
[h,w] = freqz(b,a);
subplot(2,1,1);
plot(w,abs(h));
subplot(2,1,2);
plot(w,angle(h));
其中a是传输函数分子的系数,b是分母的系数,按照(z^-1)的升幂排列,没有的补0。
计算结果如图:
然后是计算零极点。其实就是把一般传输函数的多项式形式变为乘积的形式,matlab也提供了类似的函数tf2zpk来实现二者之间的转化,并可以使用zplane函数来画出零极点图:
b = [0,0.8];
a=[1,0.5,-0.3];
[z,p,k] = tf2zpk(b,a);
zplane(b,a);
figure;
zplane