matlab自动控制仿真常见函数应用.docx
《matlab自动控制仿真常见函数应用.docx》由会员分享,可在线阅读,更多相关《matlab自动控制仿真常见函数应用.docx(11页珍藏版)》请在冰豆网上搜索。
matlab自动控制仿真常见函数应用
自动控制常见MATLAB函数的应用
roots/conv/rlocus/zpk/tf/bode/step/impulse
1、在matlab中采用roots函数求解多项式的根,采用conv函数实现多项式的积,相互连接的模块的模型求解也相当简单
(1)、串联连接命令G=G1*G2
(2)、并联连接命令G=G1±G2(3)、反馈连接命令G=feedback(G1,G2,Sign)(sign用来表示系统是正反馈或负反馈,sign=-1为负反馈)
例如:
①
程序如下:
>>p=[1304];
>>roots(p)
ans=
-3.3553
0.1777+1.0773i
0.1777-1.0773i
②、用matlab实现:
程序如下:
>>p=[321];q=[14];
>>n=conv(p,q)
n=
31494
③、一个传递函数模型,
可以由下面的命令输入:
>>num=[15];den=[1345];
>>G=tf(num,den)
Transferfunction:
s+5
---------------------
s^3+3s^2+4s+5
④、如下图所示,前向传递函数为G(S),反馈回路传递函数为H(S),利用feedback计算系统的闭环传递函数
程序如下:
>>numg=[1];deng=[50000];
>>numh=[11];denh=[12];
>>[num,den]=feedback(numg,deng,numb,denh,-1);
>>[num,den]=feedback(numg,deng,numh,denh,-1);
>>G=tf(num,den)
Transferfunction:
s+2
--------------------------
500s^3+1000s^2+s+1
2、在matlab中,可以轻松的求解系统的所有极点,从而判断其稳定性
例子:
系统的传递函数为:
用matlab判断其稳定性,程序如下:
>>num=[1,7,24,24];
>>den=[1:
9];
>>roots(den)
ans=
-1.2888+0.4477i
-1.2888-0.4477i
-0.7244+1.1370i
-0.7244-1.1370i
0.1364+1.3050i
0.1364-1.3050i
0.8767+0.8814i
0.8767-0.8814i
可见4个极点带有正实部,所以系统不稳定
3、MATLAB中给出了一个函数step()直接求取线性系统的阶跃响应,该函数的调用方式如下:
y=step(G,t)(G为系统的传递函数,t为要计算的点到所在时刻的值组成的时间向量,t一般可以由t=0:
dt:
t_end等步长地产生,t-end为终值时间,而dt为步长;y为系统的输出量)
例子:
系统的传递函数为:
线性系统的稳态值可以通过dcgain()来求得,impulse()函数可以求出系统的脉冲响应
程序如下:
>>num=[1,7,24,24];den=[1,10,35,50,24];
>>G=tf(num,den);
>>t=0:
0.1:
10;
>>y=step(G,t);
>>plot(t,y)
>>Y=dcgain(G)
Y=
1
>>holdon
>>y1=impulse(G,t);
>>plot(t,y1)
例子:
控制精度变化时,系统的闭环传递函数为:
应用如下MATLAB语言,可得到=10、=40、=80时的系统响应。
可见,当时,系统响应速度明显加快,但出现振荡
程序如下:
>>ka=80;
>>nf=[5000];df=[11000];
>>ng=[1];dg=[1200];
>>[num,den]=series(ka*nf,df,ng,dg);
>>[n,d]=cloop(num,den);
>>t=[0:
0.01:
2];
>>y=step(n,d,t);
>>plot(t,y,'black'),gridon
4、用matlab绘制根轨迹
MTLAB中提供了rlocus()函数,用来绘制给定的根轨迹,该函数的调用方式为:
(G为系统的模型,输入变量k为用户自己选择的增益,返回的变量R为根轨迹各点构成的复数矩阵)如果k值不给定,则该函数自动选择k,在这种情况下,调用格式为
这样产生的k值可以用来确定闭环系统稳定的增益范围
如果在函数调用中不返回任何参数,则将在图形窗口中自动绘制系统根轨迹曲线
Rlocufind()函数允许用户求取根轨迹上指定点处的开环增益,并将该增益下的所有的闭环极点显示出来:
例子:
闭环系统的闭环传递函数为:
特征方程可以写为:
在解题前,必须将特征方程写成下面形式:
K为所关心的参数,变化范围从0到,绘制的根轨迹如下:
程序如下:
>>num=[11];
>>den=[1560];
>>G=tf(num,den);
>>holdon;rlocus(G);
>>[K,P]=rlocfind(G)
Selectapointinthegraphicswindow
selected_point=
-2.4621+0.0248i
K=
0.4196
P=
-2.4655+0.0246i
-2.4655-0.0246i
-0.0690
例子:
研究系统根轨迹曲线和阶跃响应曲线之间的关心,考虑系统输出:
输入为单位阶跃信号时:
程序如下:
>>t=0:
0.2:
15;
>>K=16.2859;
>>num=K*[143];
>>den=[156+KK];
>>G=tf(num,den);
>>y=step(G,t);
>>plot(t,y)
>>gridon
5、在MATLAB中,使用较多的频域稳定性函数有bode函数、nyquist函数、nichols函数、margin函数,pade函数,ngrid函数等。
MATLAB的控制系统工具箱中提供了bode()函数来求取、绘制给给定线性系统的伯德图,函数调用方式如下:
其中G为系统的对象模型,变量w为用户制定频率点构成的向量,该函数在这些频率点上对系统进行频率分析。
mag、pha对应系统的幅值和相位向量,相位的单位为角度。
同时经常要将幅值向量转换成分贝形式,MATLAB命令为:
该函数的另一种调用格式为:
这时w可以自动生成,如果在调用bode函数时不返回变量,则MATLAB自动生成系统的伯德图。
一般和计算增益裕度和相角裕度的函数margin结合使用
例子:
考虑系统传递函数:
则可以用下面的命令绘出系统的伯德图,计算出增益裕度和相角裕度,程序如下:
>>w=logspace(-1,1,200);
>>num=[13];
>>den=[conv([11],[12]),0];
>>G=tf(num,den);
>>[xyw]=bode(G,w);
>>margin(x,y,w)
例子:
考虑系统传递函数
则可用下面命令绘出系统的奈氏图
>>num=[0.5];
>>den=[1210.5];
>>[re,im]=nyquist(num,den);
>>plot(re,im),gridon