Matlab控制系统计算机辅助设计文档格式.docx
《Matlab控制系统计算机辅助设计文档格式.docx》由会员分享,可在线阅读,更多相关《Matlab控制系统计算机辅助设计文档格式.docx(28页珍藏版)》请在冰豆网上搜索。
7.00004.00003.0000
(3)矩阵的转置及共轭转置
A=[5+i,2-i,1;
6*i,4,9-i];
y1=A.'
5.0000+1.0000i0.0000+6.0000i
2.0000-1.0000i4.0000+0.0000i
1.0000+0.0000i9.0000-1.0000i
y2=A'
5.0000-1.0000i0.0000-6.0000i
2.0000+1.0000i4.0000+0.0000i
1.0000+0.0000i9.0000+1.0000i
(4)使用冒号选出指定元素
y1=A(1:
2,3)
3
6
y2=A(2:
3,:
)
456
789
(5)复数矩阵的生成:
symsa1a2a3a4b1b2b3b4
A=[a1+b1*ja2+b2*j;
a3*exp(b3*j)a4*exp(b4*j)]
A=
[a1+b1*1i,a2+b2*1i]
[a3*exp(b3*1i),a4*exp(b4*1i)]
a1=3;
a2=-2;
a3=9;
a4=23;
b1=5;
b2=3;
b3=6;
b4=33;
3.0000+5.0000i-2.0000+3.0000i
8.6415-2.5147i-0.3054+22.9980i
2、多项式
p=
1024
roots(p)%用roots函数求多项式的根
ans=
0.5898+1.7445i
0.5898-1.7445i
-1.1795+0.0000i
①A=[1.2350.9;
51.756;
3901;
1234];
P=poly(A);
poly2sym(P)
ans=
x^4-(69*x^3)/10-(3863*x^2)/50-(8613*x)/100+12091/20
②polyval(P,20)
7.2778e+04
③polyvalm(P,A)
1.0e-11*
-0.4093-0.4849-0.3876-0.4519
-0.5002-0.8072-0.6004-0.5684
-0.4704-0.6196-0.6480-0.5230
-0.3297-0.4455-0.3595-0.3638
3、基本绘图命令
(1)t=0:
0.01:
2*pi;
y=cos(t);
plot(t,y)
运行结果如右图所示:
(2)
t=0:
y1=cos(t-0.25);
y2=sin(t-0.5);
plot(t,y1,t,y2)
4、基本绘图控制
4*pi;
x1=10*sin(t);
plot(t,x1,'
-.b*'
axis([-2020-2020])
gridon
title('
正弦曲线x1=10*sin(t)图'
xlabel('
4*pi'
ylabel('
x1'
text(pi/2,10,'
最大值'
1、编写命令文件:
计算1+2+…+n<
5000时的最大n值;
解:
建立M文件,文件名称记为two1,编辑程序容如下所示:
s=0;
n=1;
while(s<
5000),
s=s+n;
n=n+1;
end,
n
保存,并在命令窗口中输入two1,运行结果如下所示:
two1
n=
101
2、编写函数文件:
①用for循环结构编写程序:
建立函数文件,文件名称记为findsum1,编辑程序容如下所示:
function[s1]=findsum1()
%findsum1用for循环编写的程序
%求2的0到30次幂的和,s表示和,i表示执行次数
s1=0;
fori=0:
30,
s1=s1+2^i;
End
end
保存,并在命令窗口中输入[s1]=findsum1(),运行结果如下所示:
[s1]=findsum1()
s1=
2.1475e+09
②用while循环结构编写程序:
建立函数文件,文件名记为findsum2,编辑程序容如下所示:
function[s2]=findsum2()
%findsum2用while循环编写的程序
s2=0;
i=0;
while(i<
=30),
s2=s2+2^i;
i=i+1;
保存,并在命令窗口中输入[s2]=findsum2(),运行结果如下所示:
[s2]=findsum2()
s2=
3、解:
建立M文件,文件名记为two3,编辑程序容如下:
x=input('
pleaseinputacharacter:
\n'
'
s'
);
ifx=='
y'
||x=='
Y'
disp('
x=1'
elseifx=='
n'
N'
x=0'
else
itserro'
end
保存,并在命令窗口中输入two2,运行结果如下所示:
two2
x=0
S
itserro
Y
x=1
1、在MATLAB环境中输入下面的系统模型
控制系统模型的建立和分析(设计型)
建立M文件,文件名称记为thr1,编辑程序容如下所示:
num=[1,4,3,2];
%系统模型的分子系数
den=conv([1,0,0],conv([1,1],[1,8,20]));
%分母系数
G1=tf(num,den);
%得到开环系统模型
G2=feedback(G1,1);
%得到闭环系统模型
[p1,z1]=pzmap(G1)%不加分号,在命令窗口可显示出开环系统的零极点
[p2,z2]=pzmap(G2)%不加分号,在命令窗口可显示出闭环系统的零极点
在命令窗口输入thr1,则得出以下结果:
thr1
p1=
0
-4.0000+2.0000i
-4.0000-2.0000i
-1.0000
z1=
-3.2695
-0.3652+0.6916i
-0.3652-0.6916i
p2=
-3.9174+2.1007i
-3.9174-2.1007i
-1.1449
-0.0102+0.2972i
-0.0102-0.2972i
z2=
2、假设系统由两个模块和串联连接而成,已知
且
建立M文件,文件名称为thr2,编辑程序容如下所示:
G3=tf([1,1],[1,3,4]);
%实验三的第二题,题中的G1(s)模型
G4=tf([1,3,5],[1,4,3,2,1]);
%题中的G2(s)模型
G5=series(G3,G4)%用串联函数,将G3和G4模型串联,得到G5模型,在命令窗口显示出模型
Gss=ss(G5)%用ss得到G5模型的状态方程模型
在命令窗口中输入thr2,得到以下运行结果:
Transferfunction:
s^3+4s^2+8s+5
-------------------------------------------------
s^6+7s^5+19s^4+27s^3+19s^2+11s+4
a=
x1x2x3x4x5x6
x1-7-2.375-1.688-0.5938-0.3438-0.25
x2800000
x3020000
x4002000
x5000100
x600000.50
b=
u1
x11
x20
x30
x40
x50
x60
c=
y1000.06250.1250.250.3125
d=
y10
Continuous-timemodel.
3、假设系统的对象模型为
建立M文件,文件名称为thr3,编辑程序容如下所示:
s=tf('
%拉氏算子
G6=10/((s+1)^3);
%实验三第3题的对象模型
Gpid=0.48*(1+1/(1.814*s)+0.4353*s/0.04353);
%PID控制器
G7=series(G6,Gpid);
%控制器与对象模型进行串联得到的开环系统模型
G8=feedback(G7,1)%闭环系统的传递函数模型
[z3,p3,k3]=zpkdata(G7,'
v'
)%得到开环系统的零极点及增益
[z4,p4,k4]=zpkdata(G8,'
)%得到闭环系统的零极点及增益
在命令窗口中输入thr3,得到以下运行结果
3.79s^2+0.379s+0.2089
-------------------------------------------------------
0.07896s^4+0.2369s^3+4.027s^2+0.458s+0.2089
z3=
-0.0500+0.2294i
-0.0500-0.2294i
p3=
-1.0000+0.0000i
-1.0000-0.0000i
k3=
48
z4=
p4=
-1.4442+6.9670i
-1.4442-6.9670i
-0.0558+0.2217i
-0.0558-0.2217i
k4=
4、解:
三种典型模型建模函数:
①传递函数模型:
G=tf(num,den);
②零极点增益模型:
G=zpk(z,p,k);
③状态空间模型:
G=ss(A,B,C,D);
各种模型之间的转换语句:
[A,B,C,D]=tf2ss(num,den);
[num,den]=ss2tf(A,B,C,D,iu);
[z,p,k]=tf2zp(num,den);
[num,den]=zp2tf(z,p,k);
[A,B,C,D]=zp2ss(z,p,k);
[z,p,k]=ss2zp(A,B,C,D,i)
Simulink仿真环境入门(验证型)
1、搭建下图所示控制系统模型,自己设计输入正弦曲线参数,观察示波器及输出数据。
画出的仿真图如下,SineWave:
O(t)=3*sin(2*t),增益为5。
出现以下波形图:
左图为使用plot函数画出的figure图,右图为示波器显示的图。
控制系统时域仿真(设计型)
1、时域分析
(1)解:
建立M文件,写入以下程序:
G1=tf([5,25,30],[1,6,10,8]);
t=[0:
0.0005:
25];
[y1,t]=step(G1,t);
[ymax,tp]=max(y1);
max_overshoot=ymax-1
[y2,t]=impulse(G1,t);
figure图如右图所示:
(2)解:
wn=[2:
2:
12];
z=0.7;
25;
holdon
fori=1:
length(wn)
G2=tf(wn(i)^2,[1,2*z*wn(i),wn(i)^2]);
step(G2,t)
gridon,holdoff
legend('
wn=2'
wn=4'
wn=6'
wn=8'
wn=10'
wn=12'
(3)解:
wn=6;
zetas=[0.20.40.60.81.01.52.0];
length(zetas)
G3=tf(wn^2,[1,2*zetas(i)*wn,wn^2]);
step(G3,t)
zetas=0.2'
zetas=0.4'
zetas=0.6'
zetas=0.8'
zetas=1.0'
zetas=1.5'
zetas=2.0'
figure图如右上图所示:
2、系统稳定性分析
①零极点分布图法程序:
G4=zpk(-2,[0;
-1;
-20],100)
G5=feedback(G4,1)
pzmap(G5)
figure图:
由图可知该系统的极点均位于左半平面,所以该系统稳定。
②程序判定法程序:
p=pole(G5);
length(p)
ifreal(p(i))>
系统不稳定'
break
disp('
系统稳定'
1、
仿真图:
阶跃响应:
方波响应:
2、解:
正弦信号输入响应:
斜坡输入响应:
3、解:
建立M文件,编写以下程序:
G1=tf([11],[21]);
G2=tf([5],[231]);
H1=tf([1],[21]);
G3=series(G1,G2);
G4=feedback(G3,H1)
isstable(G4)
得到以下实验结果:
g3
Transferfunction:
10s^2+15s+5
----------------------------------
8s^4+20s^3+18s^2+12s+6
1
结论:
编写程序判断该系统的稳定性结果是该系统是稳定的。
在Simulink环境下验证编程结果:
给出阶跃信号,画出以下仿真图进行仿真:
示波器显示结果:
从上图可以看出该系统是是稳定的,所以编程结果是正确的。
控制系统根轨迹分析
编写程序如下所示:
G=zpk(-0.5,[0;
-2;
-5],1)
rlocus(G)
[k,p]=rlocfind(G)
Figure图:
系统的根轨迹图:
G=zpk([],[0;
-2],1)
2、根轨迹分析
G=zpk(-3,[0;
-5;
-6;
-1+j;
-1-j],1)
由根轨迹图可以看出点击的这一点的增益k=35.2;
闭环极点的位置p=-0.00587+1.35i,因为p<
0,所以该点系统闭环是稳定的。
编写以下程序:
k=0:
98;
[r,k]=rlocus(G,k);
[m,n]=size(r);
ifreal(r(2,i))>
kg=k(i-1)
程序的执行结果:
Zero/pole/gain:
1
-------------
s(s+1)(s+2)
kg=
由上述的执行结果可以看出该系统稳定的k值围是当k<
6时,系统是稳定的。
Figure图如右图所示:
1、
(1)解:
zeta=0.7;
wn=[2,4,6,8,10,12];
num=[wn(i)^2];
den=[1,2*zeta*wn(i),wn(i)^2];
G1=tf(num,den)
bode(G1)
得到右图所示运行结果:
zeta=[0.2,0.4,0.6,0.8,1.0,1.5,2.0];
length(zeta)
num=[wn^2];
den=[1,2*zeta(i)*wn,wn^2];
G2=tf(num,den)
bode(G2)
holdoff
zeta=0.2'
zeta=0.4'
zeta=0.6'
zeta=0.8'
zeta=1.0'
zeta=1.5'
zeta=2.0'
(3)
(a)编写以下程序:
num=[10];
den=conv([1,0,0],conv([5,1],[1,5]));
G1=tf(num,den)
nyquist(G1)
bode(G1)
(b)编写以下程序:
num=conv(8,[1,1]);
den=conv([1,0,0],conv([1,15],[1,6,10]));
G2=tf(num,den)
nyquist(G2)
bode(G2)
(c)编写以下程序:
num=conv(4,[1/3,1]);
den=conv([1,0],conv([0.02,1],conv([0.05,1],[0.1,1])));
G3=tf(num,den)
nyquist(G3)
bode(G3)
2、
(1)解:
G1=tf(2.7,[1,5,4,0])
G2=tf(2.7,[1,5,-4,0])
figure
(1)
margin(G1)
figure
(2)
margin(G2)
得到以下运行结果:
由图可以分析出G1的系统是稳定的,G2系统不稳定。