matlab.docx
《matlab.docx》由会员分享,可在线阅读,更多相关《matlab.docx(10页珍藏版)》请在冰豆网上搜索。
matlab
1、通过举例说明运用MATLAB判别控制系统稳定的所有方法
方法一:
用单位阶跃响应曲线判定系统稳定
方法二:
用代数稳定判据法判断系统的稳定性
(1)系统数学模型为传递函数形式G(S)=tf(num,den):
执行语句:
roots(G.den{1});
注:
“{}”表示维数
(2)系统数学模型为零极点增益形式G(S)=zpk(z,p,k);
执行语句:
G.p{1};
(3)系统数学模型为状态空间形式G(S)=ss(A,B,C,D);
执行语句:
eig(G.A);
注:
eig()表示计算系统的极点
方法三:
用根轨迹法判断系统的稳定性
若根轨迹在参数取值过程中,部分在左半平面,部分在右半平面,则系统的稳定性与可变参数的取值有关。
函数命令调用格式:
[kpoles]=rlocfind(G)
方法四:
用Bode图判断系统的稳定性
函数调用格式为:
margin()或[GmPmwcpwcg]=margin(G)
对于最小相位系统:
当相角裕度Pm(γ)>0o或幅值裕度Gm(h)>1时,表示系统稳定
当相角裕度Pm(γ)<0o或幅值裕度Gm(h)<1时,表示系统不稳定
幅值裕度Gm(h)、相角裕度Pm(γ)越大,系统稳定程度越好。
在使用时,Gm(h)、Pm(γ)是成对使用的,有时仅使用一个裕度指标Pm(γ)。
方法五:
用Nyquist稳定判据判断系统的稳定性
Nyquist稳定判据:
若想使得闭环系统稳定,则开环系统G(S)H(S)的Nyquist曲线逆时针绕临界点(-1,j0)点的圈数R必需等于G(S)H(S)(系统的开环传函)位于S的右半平面开环极点数P。
即:
Z=P-RZ=0稳定;
Z≠0不稳定,Z为闭环正实部根的个数。
NOWBEGIN
例:
已知系统的开环传函为:
方法一:
用单位阶跃响应曲线判定系统稳定性
>>n1=16*[169];d1=conv([-2-5-11],[-3-10-12]);
>>G=tf(n1,d1);G1=feedback(G,1);
>>step(G1)
方法二:
用代数稳定判据法判断系统的稳定性
1)
>>n1=16*[169];d1=conv([-2-5-11],[-3-10-12]);
>>G=tf(n1,d1);G1=feedback(G,1);
>>roots(G1.den{1})
ans=
-0.7748+2.7853i
-0.7748-2.7853i
-2.1419+0.9570i
-2.1419-0.9570i
2)
>>n1=16*[169];d1=conv([-2-5-11],[-3-10-12]);
>>G=tf(n1,d1);G1=feedback(G,1);
>>G2=zpk(G1);
>>G2.p{1}
ans=
-0.7748+2.7853i
-0.7748-2.7853i
-2.1419+0.9570i
-2.1419-0.9570i
3)
>>n1=16*[169];d1=conv([-2-5-11],[-3-10-12]);
>>G=tf(n1,d1);G1=feedback(G,1);
>>G3=ss(G1);
>>eig(G3.A)
ans=
-0.7748+2.7853i
-0.7748-2.7853i
-2.1419+0.9570i
-2.1419-0.9570i
因为系统闭环极点全含负实部,故系统稳定
方法三:
用根轨迹法判断系统的稳定性
>>n1=16*[169];d1=conv([-2-5-11],[-3-10-12]);
>>sys=tf(n1,d1);
>>rlocus(sys)
>>[kpoles]=rlocfind(sys)
在0方法四:
用Bode图判断系统的稳定性
1)
>>n1=16*[169];d1=conv([-2-5-11],[-3-10-12]);
>>sys=tf(n1,d1);
>>bode(sys)
>>margin(sys)
2)
>>n1=16*[169];d1=conv([-2-5-11],[-3-10-12]);
>>sys=tf(n1,d1);
>>[GmPmWcpWcg]=margin(sys)
Gm=
57.1528
Pm=
84.6160
Wcp=
12.7129
Wcg=
1.9907
可以看出相角裕度Pm=84.6160>0,所以系统是稳定的
方法五:
用Nyquist稳定判据判断系统的稳定性
先求开环传递函数在右半S平面极点个数P
>>n1=16*[169];d1=conv([-2-5-11],[-3-10-12]);
>>sys=tf(n1,d1);
>>roots(sys.den{1})
ans=
-1.2500+1.9843i
-1.2500-1.9843i
-1.6667+1.1055i
-1.6667-1.1055i
开环传递函数在右半S平面极点个数P=0。
再求nyquist曲线包围临界点的圈数R
>>n1=16*[169];d1=conv([-2-5-11],[-3-10-12]);
>>sys=tf(n1,d1);
>>nyquist(sys)
nyquist曲线包围临界点的圈数R=0。
所以Z=P-R=0,系统稳定。
2、查阅相关书籍或上网搜索,找出一个运用MATLAB制作的动画,要求有程序说明和必要的文字注释
台球模拟程序动画演示
axis([-1.6,12.6,-1.6,10.7])%确定坐标轴参数范围
holdon%保持当前图形及轴系的所有特性
fill([-2,13,13,-2],[-2,-2,11,11],[0,1,0]);%填充底座背景
fill([-1,12,12,-1],[-1,-1,10,10],[0,0.5,0]);%填充底座背景
ball1=line(0,5,'color','r','marker','.','erasemode','xor','markersize',60);%设置小球颜色,大小,线条的擦拭方式
ball2=line(8,9,'color','g','marker','.','erasemode','xor','markersize',60);%设置小球颜色,大小,线条的擦拭方式
ball3=line(-1,-1,'color','g','marker','.','erasemode','xor','markersize',80);%设置左下角圆的颜色,大小,线条的擦拭方式
ball4=line(12,-1,'color','g','marker','.','erasemode','xor','markersize',80);%设置右下角圆的颜色,大小,线条的擦拭方式
ball3=line(-1,10,'color','g','marker','.','erasemode','xor','markersize',80);%设置左上角圆的颜色,大小,线条的擦拭方式
ball4=line(12,10,'color','g','marker','.','erasemode','xor','markersize',80);%设置右上角圆的颜色,大小,线条的擦拭方式
title('完全非弹碰在模拟台球比赛的应用','color','r','fontsize',15);%图形标题
pause
(1)%设定暂停时间的长度
t=0;dt=0.005;%设制初始数值
whilet<7.2%设定横轴范围
t=t+dt;%设制横轴计算公式
y=1/2*t+5;%设制纵轴计算公式
set(ball1,'xdata',t,'ydata',y)%设制球的运动
drawnow;%刷新屏幕
end %结束
whilet<8.8%设定横轴范围
t=t+dt;%设制横轴计算公式
y=1/2*t+5;%设制纵轴计算公式
set(ball2,'xdata',t,'ydata',y)%设制球的运动
drawnow;%刷新屏幕
end %结束
whilet<11.5%设定横轴范围
t=t+dt;%设制横轴计算公式
y=-1/2*t+14.3;%设制纵轴计算公式
set(ball2,'xdata',t,'ydata',y)%设制球的运动
drawnow;%刷新屏幕
end%结束
whilet>-0.5%设制横轴范围
t=t-dt;%设制横轴计算公式
y=1/2*t+2.90;%设制纵轴计算公式
set(ball2,'xdata',t,'ydata',y)%设制球的运动
drawnow;%刷新屏幕
end%结束
whilet<6%设制横轴范围
t=t+dt;%设制横轴计算公式
y=-1/2*t+2.40;%设制纵轴计算公式
set(ball2,'xdata',t,'ydata',y)%设制球的运动
drawnow;%刷新屏幕
end%结束
whilet<11.5%设制横轴范围
t=t+dt;%设制横轴计算公式
y=1/2*t-3.0;%设制纵轴计算公式
set(ball2,'xdata',t,'ydata',y)%设制球的运动
drawnow;%刷新屏幕
end%结束
whilet>-2%设制横轴范围
t=t-dt;%设制横轴计算公式
y=-t*7.65/12.9+9.57;%设制纵轴计算公式
set(ball2,'xdata',t,'ydata',y)%设制球的运动
drawnow;%刷新屏幕
end%结束
text(2,5,'好!
进球了啊!
!
!
恭喜!
','fontsize',16,'color','r');%显示字幕的颜色和大小
3、总结MATLAB的学习体会
通过MATLAB课程的学习,我认识到MATLAB的实用性。
我能够运用它完成控制系统仿真,加深了我对控制系统的理解和认识,同时还能解决一些数学中求解的问题。
这次大作业,是我自己认真独立完成的,他让我复习了所有课程中所学的知识,让我更系统的回忆起课程中重点的内容,对这门课程有了新的认识。
更重要的是,我通过学习这门课程,老师认真严谨的态度影响了我,让我能够更踏实的去学习一门技术。
所以我觉得这门课程是我在大学里学习中十分有用的一门课程,谢谢王老师给我们这么认真细致的讲解,让我轻松的掌握了这门课程。
特别是老师在课程中还给我们讲述了些在作图中的一些实用的方法,让我觉得真的是十分收益。