Matlab的应用论文.docx
《Matlab的应用论文.docx》由会员分享,可在线阅读,更多相关《Matlab的应用论文.docx(11页珍藏版)》请在冰豆网上搜索。
Matlab的应用论文
Matlab的应用-论文
MATLAB在控制系统中的应用
结课论文
所在学院:
信息工程学院
专业名称:
自动化10-3
学生姓名:
王思嘉
学号代码:
1005130315
指导教师:
崔新忠
2.时域分析响应模块:
包括了一阶系统、典型二阶系统、任意阶系统三个主要界面,可以通过此界面绘制时域的响应曲线并且计算相关参数。
3.根轨迹分析模块:
包含了绘制根轨迹的函数计算,可以通过此界面绘制系统的根轨迹。
MATLAB是国际控制界目前使用最广的工具软件,几乎所有的控制理论与应用分支中都有MATLAB工具箱。
本节结合前面所学自控理论的基本内容,采用控制系统工具箱(ControlSystemsToolbox)和仿真环境(Simulink),学习MATLAB的应用。
(1)用MATLAB建立传递函数模型
有理函数模型
线性系统的传递函数模型可一般地表示为:
将系统的分子和分母多项式的系数按降幂的方式以向量的形式输入给两个变量
和
,就可以轻易地将传递函数模型输入到MATLAB环境中。
命令格式为:
;
;
在MATLAB控制系统工具箱中,定义了tf()函数,它可由传递函数分子分母给出的变量构造出单个的传递函数对象。
从而使得系统模型的输入和处理更加方便。
该函数的调用格式为:
G=tf(num,den);
我们来看一个简单的传递函数模型:
可以由下面的命令输入到MATLAB工作空间中去。
>> num=[1,5];
den=[1,2,3,4,5];
G=tf(num,den)
运行结果:
Transferfunction:
s+5
-----------------------------
s^4+2s^3+3s^2+4s+5
这时对象G可以用来描述给定的传递函数模型,作为其它函数调用的变量。
(2)利用MATLAB进行时域分析
1.线性系统稳定性分析
线性系统稳定的充要条件是系统的特征根均位于S平面的左半部分。
系统的零极点模型可以直接被用来判断系统的稳定性。
另外,MATLAB语言中提供了有关多项式的操作函数,也可以用于系统的分析和计算。
(1)直接求特征多项式的根
设p为特征多项式的系数向量,则MATLAB函数roots()可以直接求出方程p=0在复数范围内的解v,该函数的调用格式为:
v=roots(p)
已知系统的特征多项式为:
特征方程的解可由下面的MATLAB命令得出。
>>p=[1,0,3,2,1,1];
v=roots(p)
结果显示:
v=
0.3202+1.7042i
0.3202-1.7042i
-0.7209
0.0402+0.6780i
0.0402-0.6780i
利用多项式求根函数roots(),可以很方便的求出系统的零点和极点,然后根据零极点分析系统稳定性和其它性能。
(2)由根创建多项式
如果已知多项式的因式分解式或特征根,可由MATLAB函数poly()直接得出特征多项式系数向量,其调用格式为:
p=poly(v)
如上例中:
v=[0.3202+1.7042i;0.3202-1.7042i;
-0.7209;0.0402+0.6780i;0.0402-0.6780i];
>>p=poly(v)
结果显示
p=
1.0000-0.00003.00002.00001.00001.0000
由此可见,函数roots()与函数poly()是互为逆运算的。
(3)多项式求值
在MATLAB中通过函数polyval()可以求得多项式在给定点的值,该函数的调用格式为:
polyval(p,v)
对于上例中的p值,求取多项式在x点的值,可输入如下命令:
>>p=[1,0,3,2,1,1];
x=1
polyval(p,x)
结果显示
ans=
8
(4)部分分式展开
考虑下列传递函数:
式中
,但是
和
中某些量可能为零。
MATLAB函数可将
展开成部分分式,直接求出展开式中的留数、极点和余项。
该函数的调用格式为:
则
的部分分式展开由下式给出:
式中
…,
为极点,
…,
为各极点的留数,
为余项。
(5)由传递函数求零点和极点。
在MATLAB控制系统工具箱中,给出了由传递函数对象G求出系统零点和极点的函数,其调用格式分别为:
Z=tzero(G)
P=G.P{1}
注意:
式中要求的G必须是零极点模型对象,且出现了矩阵的点运算“.”和大括号{}表示的矩阵元素,
已知传递函数为:
输入如下命令:
num=[6.8,61.2,95.2];
den=[1,7.5,22,19.5,0];
G=tf(num,den);
G1=zpk(G);
Z=tzero(G)
P=G1.P{1}
结果显示
Z=-7
-2
P=0
-3.0000+2.0000i
-3.0000-2.0000i
-1.5000
(6)零极点分布图。
在MATLAB中,可利用pzmap()函数绘制连续系统的零、极点图,从而分析系统的稳定性,该函数调用格式为:
pzmap(num,den)
给定传递函数:
利用下列命令可自动打开一个图形窗口,显示该系统的零、极点分布图,如图13所示。
>>num=[3,2,5,4,6];
den=[1,3,4,2,7,2];
pzmap(num,den)
title(¹Pole-ZeroMap¹) %图形标题。
MATLAB函数零、极点分布图
已知系统的开环传递函数模型为:
利用下面的MATLAB命令可容易地验证出系统的根轨迹如图所示。
>>G=tf(1,[conv([1,1],[1,2]),0]);
rlocus(G);
grid
title(¹Root_LocusPlotofG(s)=K/[s(s+1)(s+2)]¹)
xlabel(¹RealAxis¹) %给图形中的横坐标命名。
ylabel(¹ImagAxis¹) %给图形中的纵坐标命名。
[K,P]=rlocfind(G)
用鼠标点击根轨迹上与虚轴相交的点,在命令窗口中可发现如下结果
select_point=0.0000+1.3921i
K=5.8142
p=-2.29830
-0.0085+1.3961i
-0.0085-1.3961i
所以,要想使此闭环系统稳定,其增益范围应为0参数根轨迹反映了闭环根与开环增益K的关系。
我们可以编写下面的程序,通过K的变化,观察对应根处阶跃响应的变化。
考虑K=0.1,0.2,…,1,2,…,5,这些增益下闭环系统的阶跃响应曲线。
可由以下MATLAB命令得到。
>>holdoff; %擦掉图形窗口中原有的曲线。
系统的根轨迹
t=0:
0.2:
15;
Y=[];
forK=[0.1:
0.1:
1,2:
5]
GK=feedback(K*G,1);
y=step(GK,t);
Y=[Y,y];
end
plot(t,Y)
对于for循环语句,循环次数由K给出。
系统画出的图形如图所示。
可以看出,当K的值增加时,一对主导极点起作用,且响应速度变快。
一旦K接近临界K值,振荡加剧,性能变坏。
不同K值下的阶跃响应曲线
参考文献:
1、《MATLAB程序设计与应用》李盛德编著大连海事大学出版社
2、《MATLAB与仿真系统实验指导书》崔新忠主编大连海洋大学
3、《自动控制原理》孟华机械工业出版社
4、《MATLAB6.0与科学计算》王沫然编著北京:
电子工业出版社2001
5、《MATLAB6使用教程》郝红伟编著北京:
中国电力出版社2001