(2) function ljdt(A,B) % The function to draw the pole-zero diagram for discrete system p=roots(A); %求系统极点 q=roots(B); %求系统零点 p=p'; %将极点列向量转置为行向量 q=q'; %将零点列向量转置为行向量 x=max(abs([p q 1])); %确定纵坐标范围 x=x+0.1; 实验结果: y=x; %确定横坐标范围 clf hold on axis([-x x -y y]) %确定坐标轴显示范围 w=0:pi/300:2*pi; t=exp(i*w); plot(t) %画单位园 axis('square') plot([-x x],[0 0]) %画横坐标轴 plot([0 0],[-y y]) %画纵坐标轴 text(0.1,x,'jIm[z]') text(y,1/10,'Re[z]') plot(real(p),imag(p),'x') %画极点 plot(real(q),imag(q),'o') %画零点 title('pole-zero diagram for 此方程不满足稳定条件 discrete system') %标注标题 function dplxy(k,r,A,B) %The function to draw the frequency response of discrete system p=roots(A); %求极点 q=roots(B); %求零点 figure(1) ljdt(A,B) %画零极点图 w=0:r*pi/k:r*pi; y=exp(i*w); %定义单位圆上的k 实验结果: 个频率等分点 N=length(p); %求极点个数 M=length(q); %求零点个数 yp=ones(N,1)*y; %定义行数为极点个数的单位圆向量 yq=ones(M,1)*y; %定义行数为零点个数的单位圆向量 vp=yp-p*ones(1,k+1); %定义极点到单位圆上各点的向量 vq=yq-q*ones(1,k+1); %定义零点到单位圆上各点的向量 Ai=abs(vp); %求出极点到单位圆上各点的向量的模 Bj=abs(vq); %求出零点到单位圆上各点的向量的模 Ci=angle(vp); %求出极点到单位圆上各点的向量的相角 Dj=angle(vq); %求出零点到单位圆上各点的向量的相角 fai=sum(Dj,1)-sum(Ci,1); %求系统相频响应 H=prod(Bj,1)./prod(Ai,1); %求系统幅频响应 figure(2) plot(w,H); %绘制幅频特性曲线 title('离散系统幅频特性曲线') xlabel('角频率') ylabel('幅度') figure(3) plot(w,fai) title('离散系统的相频特性曲线') 因为某些零点极点不在圆内,所以图像存在问题 xlabel('角频率') ylabel('相位') A=[1 2 -4 1]; B=[1 0 2]; >> dplxy(500,2,A,B) 三、实验总结: (1)通过MATLAB绘制零极点分布图并掌握离散时间零极点分析方法 (2)通过利用MATLAB 对稳定系统进行幅频和相频的分析,掌握z变化的计算方法。 (3)理解系统稳定性与零极点分布之间的关系