MATLAB 辅助教学Word格式文档下载.docx
《MATLAB 辅助教学Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《MATLAB 辅助教学Word格式文档下载.docx(74页珍藏版)》请在冰豆网上搜索。
![MATLAB 辅助教学Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2023-1/5/1878557e-f99a-48eb-af9d-183ad63fe2b7/1878557e-f99a-48eb-af9d-183ad63fe2b71.gif)
den=conv([1612],[124]);
G=tf(num,den);
[z,p,k]=zpkdata(G,'
)
pzmap(G)%绘制零极点图
axis([-3.2,0,-2,2])%设定零极点图坐标
gridon
例5已知控制系统的微分方程式为:
试
建立状态空间模型。
由本题可知
,
A=[010;
001;
-3-5-9];
B=[1;
-5;
41];
C=[100];
D=0;
G=ss(A,B,C,D)
例6
,求其TF模
型和零极点模型,并求其零极点和绘制零极点图。
A=[0100;
0010;
0001;
-50-48-28.5-9];
B=[0;
0;
1];
C=[10200];
Gss=ss(A,B,C,D)
Gtf=tf(Gss)
Gzpk=zpk(Gss)
[z,p,k]=zpkdata(Gss,'
pzmap(Gss)
例7 已知一串联系统的三个传递函数
、
和
,求此系统的传递函数。
G1=tf([265],[1452]);
G2=tf([141],[1980]);
z=[-3-7];
p=[-1-4-6];
k=5;
G3=zpk(z,p,k);
G=G3*G2*G1
例8 已知两状态方程描述的系统进行并联连接,其中状态系数矩阵为:
,
;
求此并联系统的
状态空间模型。
G1=ss([-221;
0-24;
1-40],[0;
-1],[1-11],1);
G2=ss([010;
-5-3-2],[0;
1],[1.510.5],2);
G=G1+G2
例9 如图所示的连接框图,其中
,求
此系统总的传递函数。
G1=tf([113],[1421]);
G2=tf([567],[1234]);
G3=tf([18171],[16116]);
G4=tf([56],[11080128]);
G=(G2*G1+G3)*G4
例10 如图所示为控制系统的控制框图,求系统的闭环传递函数。
G1=tf([10],[11]);
G2=tf([2],conv([10],[11]));
H2=tf([12],[13]);
H1=tf([50],conv([12],[14]));
GH=feedback(G2,H2,+1);
Gc=GH*G1;
G=feedback(Gc,H1)
第二章时域分析法
例1 计算有初始条件的零输入响应。
设控制系统状空间表达是:
。
零输入时的状态值
A=[-2-2.5-0.5;
100;
010];
B=[100]'
;
C=[01.51];
G=ss(A,B,C,D);
Gs=tf(G)
y=initial(G,[102],0:
2:
100);
h=plot(y);
set(h,'
linewidth'
3*get(h,'
));
grid;
axis([0100-0.22.5]);
title('
零输入响应曲线'
xlabel('
t'
ylabel('
y'
可以看到,系统输出的初始值不为零;
在本题中,输出为2。
在程序中增加零
状态输出就可得到实际的系统输出。
程序代码如下:
y1=step(G,100);
yy=y1+y;
plot([yy1yy]);
响应输出曲线'
axis([0120-0.23]);
text(40,0.4,'
零输入响应'
text(40,0.7,'
零状态输出响应'
text(12,2.5,'
总的输出响应'
例2 某位置随动系统的方框图如图所示。
求此系统的单位阶跃响应曲线。
先求系统的传递函数,代码如下:
G=tf([10],conv([10],[0.51]));
H=tf([0.11],[1]);
GH1=feedback(G,H);
GH=feedback(GH1,1)
绘制阶跃响应曲线,代码如下:
GH=tf([10],[0.5220]);
step(GH)
单位阶跃响应曲线'
例3 已知某控制系统的传递函数
,对于任意的
输入信号,求系统的输出响应曲线。
1 当输入信号是
时;
2 当输入信号是
时。
绘制正弦信号输出响应曲线的程序代码:
G=tf(conv([5],[11]),conv([10],[1423]));
t=[0:
.1:
150]'
u=sin(t+30*pi/180);
y=lsim(G,u,t);
plot(y(1:
150));
set(gca,'
ytick'
-4:
1:
8);
正弦信号的输出响应曲线'
grid
绘制余弦信号输出响应曲线的程序代码:
0.1:
u=2*cos(5*t+30*pi/180);
余弦信号的输出响应曲线'
例4 已知单位负反馈控制系统的开环传递函数为
,试判断此闭环系统的稳定性。
首先求闭环系统的特征多项式,程序代码:
z=-2;
p=[0-0.5-0.8-3];
k=0.2;
Go=zpk(z,p,k);
Gc=tf(feedback(Go,1));
dc=Gc.den;
dens=poly2str(dc{1},'
根据特征多项式,求其特征根来判断系统的稳定性。
程序如下:
den=[14.34.31.40.4];
p=roots(den)
利用零极点图来判断系统的稳定性。
[z,p,k]=zpkdata(Gc,'
)
pzmap(Gc)
例5 如图所示的控制系统方框图,计算其动态误差系数。
num=[112];
den=10;
Es=feedback(1,G);
symssnumsdens
nums=poly2sym(Es.num{1});
dens=poly2sym(Es.den{1});
y=sym2poly(taylor(nums/dens));
y1=length(y);
fori=1:
y1
yy(i)=y(y1-i+1);
ifyy(i)==0
k(i)=inf;
else
k(i)=1/yy(i);
end
end
k
例6已知二阶振荡环节的传递函数
,其中ωn=
0.4,ζ从0变换到2,求此系统的单位阶跃响应曲线、脉冲响应曲线
和斜坡响应曲线。
系统单位阶跃响应曲线的程序代码:
symss
forzeta=[0:
0.2:
0.8,1:
0.5:
2]
wn=0.4;
wn=sym(num2str(wn));
zet=sym(num2str(zeta));
ifzeta==0
figure
(1)
ezplot(ilaplace(wn^2/s/(s^2+wn^2)),[080]);
\xi=0'
elseifzeta==1
figure
(2)
ezplot(ilaplace(wn^2/s/(s+wn)^2),[080]);
holdon;
ezplot(ilaplace(wn^2/s/(s^2+2*zet*wn*s+wn^2)),[080]);
\xi:
0.2,0.4,0.6,0.8,1.0,1.5,2.0'
axis([08001.8])
gtext('
0.4'
1.0'
2.0'
系统脉冲响应曲线的程序代码:
wn=sym(wn);
zet=sym(zeta);
ezplot(ilaplace(wn^2/(s^2+wn^2)),[060]);
ezplot(ilaplace(wn^2/(s+wn)^2),[060]);
ezplot(ilaplace(wn^2/(s^2+2*zet*wn*s+wn^2)),[060]);
gridon,title('
axis([060-0.20.4])
系统斜坡响应的程序代码:
当输入信号为斜坡信号时,R(s)=
ezplot(ilaplace(wn^2/s^2/(s^2+wn^2)),[060]);
ezplot(ilaplace(wn^2/s^2/(s+wn)^2),[080]);
ezplot(ilaplace(wn^2/s^2/(s^2+2*zet*wn*s+wn^2)),[080]);
axis([080080])
例7 已知控制系统的传递函数
,求此系统单位阶
跃响应曲线和脉冲响应曲线。
单位阶跃响应曲线程序代码:
num=[124];
den=[11254];
[r,p,k]=residue(num,den);
y=sum(ilaplace(r./(s*(s-p))));
ezplot(y,[030]);
axis([03001.4]);
y(t)'
脉冲响应曲线程序代码:
y=sum(ilaplace(r./(s-p)));
ezplot(y,[025]);
axis([025-0.41.0]);
脉冲响应曲线 '
例8 求一阶惯性环节
的阶跃响应曲线和脉冲响应曲线。
绘制阶跃响应曲线程序代码:
forT=5:
5:
30
G=tf([1],[T1]);
step(G,160);
axis([016001.1]);
T:
5~30阶跃响应曲线'
0:
1.1);
绘制脉冲响应曲线程序代码:
impulse(G,100);
axis([0100-0.010.22]);
5~30脉冲响应曲线'
例9 已知三阶系统
,将此展开为部
分分式展开式,并求此控制系统的脉冲响应曲线。
num=[2115];
den=[173260];
[r,p,k]=residue(num,den)
ezplot(y,[04]);
axis([04-12.2]);
-0.9:
.3:
2.1);
脉冲响应曲线'
第三章 根轨迹法
例1 根轨迹的概念
%G(s)H(s)=50*/s(s+1)
ng=1;
dg=poly([0-1]);
GH=tf(50*ng,dg)
GH=zpk(GH)
pzmap(ng,dg)
Zero-PolePlot'
'
FontWeight'
bold'
r=rlocus(ng,dg);
rlocus(ng,dg);
holdon
plot(r,'
LineWidth'
2),
Root-LocusPlotofG(s)H(s)=50/s(s+1)'
例2 分支数、起点与终点
%G(s)H(s)=k*(s+1)/s(s+2)
ng=[11];
dg=poly([0-2]);
GH=tf(ng,dg)
[p,z]=pzmap(ng,dg);
pmm=length(p);
zmm=length(z);
pmm
pre(i)=real(p(i));
pim(i)=imag(p(i));
zmm
zre(i)=real(z(i));
zim(i)=imag(z(i));
plot(pre,pim,'
x'
2)
plot(zre,zim,'
o'
[r,k]=rlocus(ng,dg);
k1=[0:
.02:
16];
rlocus(ng,dg,k1);
%plot(r,'
Root-LocusPlotofG(s)H(s)=k*(s+1)/s(s+2)'
'
例3渐近线、对称于实轴
%G(s)H(s)=k*/s(s+1)(s+2)
dg=poly([0-1-2]);
%pzmap(ng,dg)
%r=rlocus(ng,dg);
rlocus(ng,dg,'
:
);
axis([-3.51.5-33])
r'
[xx,yy,pp,nex]=asymptote(ng,dg);
plot(xx,yy,'
b'
Root-LocusPlotof
G(s)H(s)=k*/s(s+1)(s+2)'
),
text(-1.44,-0.2,['
\sigma='
num2str(pp)],'
)%渐近
线与实轴交点
text(-1.44,-0.5,['
\0=\pm'
num2str(180/nex),'
\circ'
'
num2str
(180),'
],'
)%渐近线与实轴夹角
例4 起始角与终止角、与虚轴交点
%G(s)H(s)=k*/s(s^2+2s+2)
dg=[1220];
%GH=tf(ng,dg)
sgrid
2),[xx,yy]=asymptote(ng,dg);
plot(xx,yy),
Root-LocusPlotofG(s)H(s)=k*/s(s^2+2s+2)
)'
%title('
Root-LocusPlotofG(s)H(s)=k*/s(s^2+2s+2)(用鼠标定点确定K
!
)'
%text(-1.1,1.1,['
\Theta='
num2str(-45),'
]),
%text(-1.1,-1.1,['
num2str(45),'
%[ng,dg]=dispK(ng,dg);
例5 分离点、实轴上的根轨迹
%G(s)H(s)=10*/s(s+1)(s+2)
%ng=[14];
dg=poly([0-1-2-3]);
[xx,yy]=asymptote(ng,dg);
plot(xx,yy)
gridon,
G(s)H(s)=k*/s(s+1)(s+2)(用鼠标定点确定K!
每次选点的第一点
按在窗口外则结束操作)'
),%,'
dispD1(GH);
%xx=get(gca,'
Xlim'
yy=get(gca,'
Ylim'
%text(xx
(1)+0.1,0.93*yy
(2),'
点开环极点,'
text(xx
(1)+0.1,0.84*yy
(2),'
则中断点取。
'
[ng,dg]=dispK(ng,dg);
例6 与平行于虚轴的直线对称情况
%G(s)H(s)=k*/s(s+4)(s^2+4s+20)
%ng=1;
rr=roots([146]);
rr=roots([1420]);
dg=poly([0-4rr'
]);
GH=zpk(GH),
Zero-PolePlot'
axis([-62-55]),[xx,yy]=asymptote(ng,dg);
plot(xx,yy,-xx-4,-yy),
Root-LocusPlotofG(s)H(s)=k*/s(s+4)(s^2+4s+20)'
%dispD2(GH);
例7带开环零点的二阶系统
%G(s)H(s)=k*(s+1)/s^2
ng=[1