自系统建模的MATLAB实现.docx
- 文档编号:14974303
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:17
- 大小:168.09KB
自系统建模的MATLAB实现.docx
《自系统建模的MATLAB实现.docx》由会员分享,可在线阅读,更多相关《自系统建模的MATLAB实现.docx(17页珍藏版)》请在冰点文库上搜索。
自系统建模的MATLAB实现
第三章 系统建模的MATLAB实现
在第二章介绍了系统模型和建模的基本理论,各种计算机语言都可以实现建模。
本章以MATLAB语言为例,介绍建模的计算机实现。
关于MATLAB的基本知识见附录。
3.1 数学模型的MATLAB实现
3.1.1系统时域模型的MATLAB实现
如上章所述,对于连续时间系统可用微分方程和传递函数来描述,本节讲述如何用MATLAB实现系统的时域模型。
例如,假设有一个单输入单输出连续系统的输入信号为
输出信号为
,系统相应的微分方程如式(2.1)所示,对此微分方程作Laplace变换,则该连续系统的传递函数为(式(2.2))
在较早的版本MATLAB4.2中,该系统可由其分子和分母多项式的系数(按s的降幂排列)所构成的两个向量唯一地确定下来,即
NUM=[bm, bm-1,…,b0]
DEN =[an,an-1,…,a0]
在MATLAB5及以后的版本中,用函数TF可以建立一个系统传递函数模型,其调用格式为
SYS=tf(NUM,DEN)
【例3.1】若给定系统的传递函数为
则可以将其用MATLAB形式表达出来:
%MATLABPROGRAM3-1
num=18*[0,1,2];den=conv(conv([115],[125 ],[1 0.4 ]);
printsys(num,den,’s’)
运行结果:
num/den=
此例也可建立传递函数模型如下:
%MATLABPROGRAM 3-2
num=18*[0,1,2];den=conv(conv([115], [125],[10.4]);
mod=tf(num,den)
运行结果:
Transferfunction:
对于离散时间系统,对式(2.14)差分方程两边取z变换,并设
及其各阶差分的初始值均为零,可得
(3.1)
称为系统的z函数。
在MATLAB4.2中,该离散系统也可以由其分子和分母多项式的系数(按z的降幂排列)所构成的两个向量来唯一确定,即
NUM=[fm,fm-1, …,f0]
DEN= [gn,gn-1, …,g0]
在MATLAB5及以后的版本中,可用函数TF来建立系统传递函数模型,其调用格式为
SYS=tf(NUM,DEN)
其中,NUM和DEN的意义同上,T为采样时间间隔。
此外,如果已知二阶系统的两个参数——自然频率ωn和阻尼比ζ,则可通过函数ORD2求出此系统传递函数模型和状态方程模型,其调用格式分别为
[A,B,C,D]=ord2(ωn, ζ)
调用结果返回连续二阶系统状态方程的系数矩阵A,B,C,D的表达式;
[NUM,DEN]=ord2(ωn,ζ)
调用结果返回连续二阶系统用分子和分母多项式表示的传递函数。
传递函数表达式用于单输入单输出(SISO)系统建模非常方便。
也可用它来表达多输入多输出(MIMO)系统。
MATLAB提供用传递函数矩阵表达多输入输出系统模型的方法,这儿不再介绍。
3.1.2 系统状态空间模型的MATLAB实现
状态方程是现代控制理论描述系统模型的一种方法。
一个线性系统可以采用状态空间形式来表达:
(3.2)
式中
为
维状态向量,
为
维输入向量,
为
维输出向量。
在MATLAB 4.2中,该线性系统可以用状态方程系数矩阵
来描述。
在MATLAB5及以后的版本中,用函数SS可以建立一个系统状态方程模型,调用格式为
SYS=ss (A,B,C, D)
其中,A,B,C,D为系统状态方程系数矩阵。
【例3.2】若给定系统的状态方程系数矩阵为
则可以将其用MATLAB形式表达出来:
% MATLABPROGRAM3-3
a =[-40.4–391–150;100;01 0] ;b = [ 100]′; c =[0 18360]; d= 0;
printsys ( a,b, c,d )
运行结果:
a=
x1 x2 x3
x1 -40.40000 -391.00000-150.00000
x21.00000 0 0
x3 0 1.00000 0
b =
u1
x11.00000
x2 0
x3 0
c=
x1 x2 x3
y1 018.00000 360.00000
d=
u1
y1 0
在MATLAB5中,上例可直接调用函数SS求得相同结果。
对于离散系统来讲,状态空间模型可以写成
(3.3)
同样地,离散系统状态空间在MATLAB4.2中也可以简记为
。
在MATLAB5及以后的版本中,用函数SS也可以建立一个离散系统传递函数模型,其调用格式为
SYS=ss(F,G, C,D)
其中,F, G,C,D为离散系统状态方程系数矩阵;T为采样时间间隔。
3.1.3系统的零极点模型
零极点模型实际上是传递函数模型的另一种形式,其方法是对原系统传递函数的分子和分母进行因式分解,以获得系统的零极点表达形式。
对于SISO系统来讲,其零极点模型可以简记为
(3.4)
式中,
和
分别为系统的零极点,K为系统增益。
在MATLAB4.2中,不能由零极点表达式建立系统零极点模型,只能由其它模型形式转换得到。
在MATLAB5及以后的版本中,系统的零极点模型可以用函数ZPK来直接建立系统零极点模型,其调用格式为
SYS=zpk([Z], [P], [K])
其中,[Z],[P], [K]分别为系统的零点、极点和增益。
【例3.3】系统模型同例3.1,求系统的零极点模型。
%MATLABPROGRAM 3-4
Sys=zpk(-2,[ -15,-25,-0.4],18)
运行结果:
zero/pole/gain:
同时MATLAB提供了多项式求根的函数ROOTS来求系统的零极点,调用格式为
Z= roots(MUM)
或 P =roots(DEN)
其中,NUM、DEN分别为传递函数模型的分子和分母多项式系数所构成的向量。
对于离散系统,也可以用类似的方法获得零极点模型。
3.2 系统模型转换的MATLAB实现
如第二章所述,对系统的数学模型描述主要有微分方程模型、传递函数模型、状态空间模型和零极点模型等形式,这些模型之间存在着内在的等效关系。
在一些场合下,需要用其中一种形式的模型,而在另一种场合下可能又需要另外形式的模型,所以研究由一种模型转换为另一种模型具有非常重要的意义。
下面介绍模型转换的MATLAB实现。
MATLAB 4.2控制系统工具箱提供了系统模型之间相互转换的函数。
如:
1.TF2SS是用来由系统传递函数模型来求取其状态空间模型,调用格式为
[A, B,C,D]=tf2ss(NUM,DEN)
其中,NUM、DEN分别为传递函数模型的分子和分母多项式系数向量;返回结果[A,B, C, D]为系统状态空间模型系数矩阵。
2.函数SS2TF用系统状态空间模型来求取其传递函数模型,调用格式为
[NUM,DEN] =ss2tf(A,B,C,D,IU)
其中,A,B,C,D为系统状态方程系数矩阵,IU指定是哪个输入,返回结果DEN和NUM分别为传递函数分母和分子多项式系数向量。
3.函数SS2ZP是用来由系统状态空间模型来求取其零极点模型,调用格式为
[Z,P,K]= ss2zp(A,B,C,D, IU)
其中,Z,P, K分别为系统零极点模型的零点、极点和增益,其余参数说明同上。
4.函数TF2ZP是用来由系统传递函数模型来求取其零极点模型。
调用格式为
[Z,P,K]=tf2zp(NUM,DEN)
参数说明同上。
5.函数ZP2SS是用来由系统零极点模型来求取其状态空间模型,调用格式为
[A,B, C,D]=zp2ss(Z, P,K)
参数说明同上。
6.函数SS2SS是用来由系统状态空间模型来求取其具有相似性的状态空间模型,调用格式为
[At, Bt,Ct,Dt] = ss2ss (A, B,C,D,T)
其中,T为转换矩阵;(A,B, C,D)和(At,Bt,Ct, Dt)分别为系统转换之前和之后的状态空间表达式系数矩阵。
MATLAB 5及以后的版本提供了更为简单的模型转换形式:
Newsys= tf (sys)
可将非传递函数形式的系统模型sys转换成传递函数模型Newsys;
Newsys=zpk(sys)
可将非零极点形式的系统模型sys转换成零极点模型Newsys;
Newsys= ss(sys)
可将非状态空间形式的系统模型sys转换成状态空间模型。
【例3.4】将系统
转换为零极点形式,采样周期为0.01。
用MATI.AB编写程序如下:
%MATLAB PROGAM3-5
num= [0.04 0.04];
den =[1–1810.9];
sysl=tf(num,den,0.01); %传递函数模型
sys2=zpk (sysl) %转换为零极点形式
运行结果:
zero/pole/gain:
samplingtime:
0.01
3.3 系统模型参数获取的MATLAB实现
在系统分析中,往往需要知道所建立的系统模型的某参数以便直接利用参数中的有关数据。
为此,MATLAB提供了专用函数TFDATA,ZPKDATA和SSDATA,调用格式分别为
[num,den] =tfdata(sys,‘v’)
[z,p,k ]=zpkdata(sys)
[A, B,C,D ]= ssdata(sys)
【例3.5】求取例3.4给定的传递函数模型分子多项式和分母多项式系数向量。
在MATLABCOMMAND窗口下键入:
[num,nen,Ts]=tfdata(sys,'v')
num=0 0 0.04000.0400
den =1.0000-2.000081.0000 0.9000
Ts=0.0100
3.4 系统变量名的设置
在系统运算、连接和分析时,为一目了然地知道系统变量的物理意义及这些物理量之间相互关系,可在系统建模后,对系统变量“定名”。
在MATLAB中可用函数SET给变量定名。
【例3.6】建立系统
模型,且输入名为Threst,输出名为Velocity。
用MATLAB编写程序如下
% MATLABPROGRAM3-6
sys=tf(l [110]);
set(sys,‘inputName’,‘Threst’,‘outputName’,‘Velocity’);
sys
运行结果:
Transfer functionforminput"Thrust" tooutput "Velocity":
3.5 系统模型的连接
一个系统是由许多环节或子系统按一定方式连接起来组合而成,它们之间连接方式有串联、并联、反馈、附加等。
MATLAB提供了各类模型连接函数。
3.5.1 模型串联
函数SERIES用于两个线性模型串联,调用格式为
sys=series(sys1,sys2 )
图3.1是一个单输入、单输出(SISO)串联模型,sys1,sys2和sys的关系如图示。
该函数的执行结果等价于sys= sysl*sys2。
对于多输入多输出(MIMO)系统,函数SERIES的调用格式为
sys=series( sys1, sys2,outputs1,inputs2 )
函数执行系统sysl和系统sys2串联时,将系统sysl的输出端1和系统2的输入端2连接。
如图3.2所示。
系统端口名称可用函数SET定名(见3.4节)。
图3.1SISO模型串联 图3.2 MIMO模型串联
3.5.2 模型并联
函数PARALLEL用于两个模型并联,调用格式为
sys= parallel( sys1,sys2 )
其中,sysl,sys2和sys关系如图3.3所示。
该函数执行结果等价于sys = sysl+sys2。
对于MIMO系统,函数PARALLEL的调用格式为
sys=parallel (sysl,sys2,IN1,IN2,OUT1,OUT2)
函数执行系统sys1和sys2并联时,将sys1的输入端IN1和sys2的输入端IN2连接,sys1的输出端OUT1和sys2的输出端OUT2连接起来,如图3.4所示。
图3.3 SISO模型并联 图3.4 MIMO模型并联
3.5.3 反馈连接
函数FEEDBACK用于模型的反馈连接,调用格式为
sys =feedback(sys, sys2,sign)
其中,sys1,sys2和sys如图3.5所示,当采用负反馈时,sign可忽略;当采用正反馈时,sign= +1。
sys =feedback (sys1,sys2,FEEDOUT, sign)
函数执行反馈连接时,将sys2输出端FEEDOUT反馈直接至sys1的输入端FEEDIN,如图3.6所示。
图3.5系统反馈连接 图3.6 MIMO系统反馈连接
【例3.7】已知两个系统分别为
输入名:
Torgue,输出名:
Velocity,求:
。
用MATLAB编写程序如下:
%MATLAB PROGRAM3-7
G =tf( [25 1 ], [123], ‘inputname’,‘Torgue’,‘outputname’, ‘Velocity’ );
H=zpk([0 –2],–10, 1);
Cloop=feedback (G, H)
运行结果:
cloop =
Zero/pole/gainfrom input ‘Torgue’to output‘Velocity’:
3.5.4系统扩展
系统扩展就是把两个或多个子系统组合成一个系统组。
MATLAB提供系统扩展的函数APPEND,调用格式为
sys=append(sys1,sys2,…)
其中,sys1,sys2,…和sys如图3.7所示。
图3.7 系统扩展
若sys1,sys2,…是用传递函数形式描述,则
若sys1和sys2用状态空间形式描述,则sys为
3.6 模型降阶
在系统的研究中,模型降阶技术有很重要的作用,其目的是使高阶系统用一个低阶的模型近似,这样高阶系统可按低阶系统处理,为分析设计高阶系统带来方便。
模型降阶技术是系统分析、设计和仿真中不可缺少的一环,其基本思想是使原始系统的系数矩阵的阶次降低,并保留原系统的主导特征值和一些重要的状态。
在MATLAB控制系统工具箱中提供了基于平衡实现降阶函数BALREAL和MODRED。
函数BALREAL计算可控及可观测的Gram矩阵,并对原系统进行等价变换,将原系统分成两部分,其中一部分包含原系统矩阵较大奇异值,而另一部分包含较小奇异值,平衡实现系统完全与原系统等价,如下式所示:
(3.5)
如果截取对应于小奇异值的子系统,则降阶模型为
(3.6)
在MATLAB中,函数BALREAL的调用格式为
sysb=balreal(sys )
[sysh,g, T,Ti]=balreal ( sys)
其中,sys为原系统;sysb为平衡实现系统,式(3.8)与原系统等价;g为平衡对角线gram矩阵;T为状态变换矩阵;Ti=T–1。
在MATLAB中,函数MODRED用于系统降阶实现,其调用格式为
rsys =modred(sys,elim)
rsys= modred (sys,elim,‘mde’)
rsys=modred(sys,elim, ‘del’)
其中,sys常为函数halreal()变换的模型;elim为待消去的状态;rsys为降阶后的系统;‘mde’—降阶中保持增益匹配;‘del’—降阶中不保持匹配。
【例3.8】连续系统四阶模型为
试对该系统进行降阶处理。
用MATLAB编写程序如下:
%MATLABPROGRAM3-8
sys= tf([l113626] , [114.6 74.96153.799.65] ) ; %求平衡实现系统sysb
sysmde =modred (sysb,3:
4,‘mde’); %求降阶系统模型
sysdel= modred(sysh,3:
4,‘del’);
step (sys,‘r-’, sysmde,‘m-’,sysdel, ‘b-’) %比较降阶前后系统阶跃响应
grid
运行结果:
g =
0.1394
0.0095
0.0006
0.0000
可见最后两个状态变量可以去除,删去后两个变量,得等价降阶模型(二阶)为:
a=
x1 x2
x1 -3.53794 -0.92695
x2 0.92695 -0.76906
b =
u1
x1 0.99311
x2 -0.12119
c=
x1 x2
y1 0.99311 0.12119
d=
u1
y1 0.00124
降阶前后系统阶跃响应如图3.8所示,可见降阶前后的阶跃响应曲线几乎完全吻合。
图3.8 降阶前后系统阶跃响应
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 系统 建模 MATLAB 实现