电子科大软件实验离散系统的转移函数零极点分布和模拟.docx
《电子科大软件实验离散系统的转移函数零极点分布和模拟.docx》由会员分享,可在线阅读,更多相关《电子科大软件实验离散系统的转移函数零极点分布和模拟.docx(9页珍藏版)》请在冰豆网上搜索。
![电子科大软件实验离散系统的转移函数零极点分布和模拟.docx](https://file1.bdocx.com/fileroot1/2022-12/12/9cd51727-94fc-497a-9887-bad3003218d1/9cd51727-94fc-497a-9887-bad3003218d11.gif)
电子科大软件实验离散系统的转移函数零极点分布和模拟
电子科大软件实验:
离散系统的转移函数-零、极点分布和模拟
————————————————————————————————作者:
————————————————————————————————日期:
电子科技大学
实验报告
学生姓名:
学号:
指导教师:
一、实验室名称:
信号与系统实验室
二、实验项目名称:
离散系统的转移函数,零、极点分布和模拟
三、实验原理:
离散系统的时域方程为
其变换域分析方法如下:
系统的频率响应为
Z域
系统的转移函数为
分解因式
,其中
和
称为零、极点。
在MATLAB中,可以用函数[z,p,K]=tf2zp(num,den)求得有理分式形式的系统转移函数的零、极点,用函数zplane(z,p)绘出零、极点分布图;也可以用函数zplane(num,den)直接绘出有理分式形式的系统转移函数的零、极点分布图。
四、实验目的:
目的:
1、加深对离散系统转移函数、零极点概念的理解;
2、根据系统转移函数求系统零极点分布。
任务:
利用MATLAB函数tf2zp、zplane求系统零极点及绘制零极点图;根据系统零极点图求系统的频率响应。
5、实验内容:
实验内容
(一)、使用实验仿真系统
实验内容
(二)、MATLAB仿真
六、实验器材(设备、元器件):
计算机、MATLAB软件。
七、实验步骤:
内容一:
1、启动工具箱主界面,选中“实验三离散信号的转移函数、零极点分布和模拟(综合性)”,点击按钮“进入实验”,启动实验三的启动界面,如图4.3-1所示。
2、仔细阅读实验目的和实验内容,点击按钮“进入实验”,打开实验三主界面,如图4.3-2。
3、由离散信号系统的转移函数绘制系统的零极点图。
根据线性常系数差分方程:
来确定系统的转移函数。
给定向量b和向量a的值来设定系统转移函数的分子、分母向量。
4、点击“绘制系统零极点图”按钮,就可以得到系统的零极点图。
内容二:
对系统系统
1、编程实现系统的参数输入,绘出幅度频率响应曲线和零、极点分布图。
2、根据系统的零极点计算系统频率响应的幅值和相位。
定义omega=[0:
511]*pi/256和unitcirc=exp(j*omega)得到在单位圆上512个等分点,在这些点上将要对频率响应
求值。
(a)定义polevectors1是一个2×512的矩阵,其中每一行包含这样一些复数,这些复数是由unitcirc的相应列减去一个极点位置得到的。
如果ps1是一个列向量,它包含了极点的位置,可以用下列命令来完成
》polevectors1=ones(2,1)*unitcirc–ps1*ones(1,512)
用abs和astan2定义polelength1和poleangle1作为polevectors1中每一元素的幅值和相位。
(b)类似与polevectors1定义zerovectors1,使得它是2×512的矩阵,其中包含从零点位置到unitcirc元素的向量。
定义zerolength1和zeroangle1分别是这些向量的幅值和相位。
(c)画出polelength1和zerolength1对于omega的图。
根据这些图,预计
在哪里有最大值和最小值?
(d)利用MATLAB命令H=freqz(b,a,512,’whole’)导出幅值和相位,与(c)中的结果相比较。
8、实验数据及结果分析:
实验程序:
b=[1];
a=[1,-0.9,0.81];
[b,a]=eqtflength(b,a);
[z,p,k]=tf2zp(b,a)
figure
(1);
freqz(b,a,'whole')
title('原图像')
figure
(2);
zplane(z,p)
title('零极点图')
omega=[0:
511]*pi/256;
unitcirc=exp(i*omega);
X=real(unitcirc);Y=imag(unitcirc);
ps1=p;
polevectors1=ones(2,1)*unitcirc-ps1*ones(1,512);
P=polevectors1;
pabs=abs(P);
pastan2=angle(P);
zs1=z;
zerpvectors1=ones(2,1)*unitcirc-zs1*ones(1,512);
Z=zerpvectors1;
zabs=abs(Z);
zastan2=angle(Z);
figure(3)
X1=omega;
Y1=pabs;
plot(X1,Y1,'rx')
holdonfigure(3)
Y2=zabs;
plot(X1,Y2,'bo')
holdoff
title('polelength1和zerolength1对于omega的图')
p1=pabs(1,:
);
p2=pabs(2,:
);
z1=zabs(1,:
);
z2=zabs(2,:
);
P1=pastan2(1,:
);
P2=pastan2(2,:
);
Z1=zastan2(1,:
);
Z2=zastan2(2,:
);
H1abs=z1.*z2./(p1.*p2);
H1astan2=Z1+Z2-P1-P2;
H=freqz(b,a,512,'whole');
Habs=rot90(abs(H));
Hastan2=rot90(angle(H));
HF=fix(H1astan2./pi);
fork=1:
512
ifHF(k)>0
ifrem(HF(k),2)==0
H1Rastan2(k)=H1astan2(k)-HF(k)*pi;
else
H1Rastan2(k)=H1astan2(k)-HF(k)*pi-pi;
end
elseifrem(HF(k),2)==0
H1Rastan2(k)=H1astan2(k)-HF(k)*pi;
else
H1Rastan2(k)=pi-HF(k)*pi+H1astan2(k);
end
end
figure(4)
F=X1/(pi);
dB=20*log10(Habs);
subplot(2,1,1);plot(F,dB);gridon;
theta=deg2rad(H1Rastan2);
subplot(2,1,2);plot(F,theta);gridon;
title('模拟之后的图像')
图像:
九、实验结论:
思考题:
根据得到的系统零极点分布,试大致画出系统的频率响应曲线。
十、总结及心得体会:
matlab使用过程中存在一些程序使用习惯的错误,这些东西,花费了很长时间才改好。
十一、对本实验过程及方法、手段的改进建议:
在上仿真之前,最好先上两节matlab教学课,让大多数人能快速掌握。
报告评分:
指导教师签字: