自动控制常见MATLAB函数的应用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

自动控制常见MATLAB 函数的应用

1、在matlab 中采用roots 函数求解多项式的根,采用conv 函数实

现多项式的积,相互连接的模块的模型求解也相当简单(1)、串联连接命令G=G1*G2(2)、并联连接命令G=G 1±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③、一个传递函数模型,可以由下面的命令输入:32()34p s s s =++2

()(321)(4)n s s s s =+++325()345

s G s

s s s +=+++

>>num=[15];den=[1345];

>>G=tf(num,den)

Transfer function:

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)

()

R S −−−→

Transfer function:

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个极点带有正实部,所以系统不稳定

3287653272424()2346789

S S S G S S S S S S S S +++=+++++++

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

>>hold on

>>y1=impulse(G,t);

>>plot(t,y1)

3272424()S S S G S +++=++++

例子:控制精度变化时,系统的闭环传递函数为:

应用如下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'),grid

on

a k 123212()()5000()1()()1020200005000a a a a

k G S G S K s k G S G S s s s k φ==++++a k a k a k 80

a k =

4、用matlab绘制根轨迹

MTLAB中提供了rlocus()函数,用来绘制给定的根轨迹,该函数

的调用方式为:R=rlocus(G,K)

(G为系统的模型,

输入变量k为用户自己选择的增益,返回的变量R为根轨迹各点构成的复数矩阵)如果k值不给定,则该函数自动选择k,在这种情况下,调用格式为[,]()

R K r l o c u s G

这样产生的k值可以用来确定闭环系统稳定的增益范围

如果在函数调用中不返回任何参数,则将在图形窗口中自动绘制系统

根轨迹曲线Rlocus(G)

相关文档
最新文档