系统建模的MATLAB实现_第1页
系统建模的MATLAB实现_第2页
系统建模的MATLAB实现_第3页
系统建模的MATLAB实现_第4页
系统建模的MATLAB实现_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第三章 系统建模的 MATLAB 实现在第二章介绍了系统模型和建模的基本理论,各种计算机语言都可以实现建模。本章以 MATLAB 语言为例,介绍建模的计算机实现。关于 MATLAB 的基本知识见附录。3.1 数学模型的 MATLAB 实现3.1.1 系统时域模型的 MATLAB 实现如上章所述,对于连续时间系统可用微分方程和传递函数来描述,本节讲述如何用 MATLAB 实现系统的时域模型。例如,假设有一个单输入单输出连续系统的输入信号为ut),输出信号为yt),系统相应的微分方程如式(2.1)所示,对此微分方程作 Laplace 变换,则该连续系统的传递函数为(式(2.2Y(s) b s b

2、s b sbm1G(s) mmm110U(s) a s a s a sann1nn110在较早的版本 MATLAB 4.2 中,该系统可由其分子和分母多项式的系数(按s 的降幂排列)所构成的两个向量唯一地确定下来,即NUM = b , b , , b mm-10DEN = a , a , , a nn-10在 MATLAB 5 及以后的版本中,用函数 TF 可以建立一个系统传递函数模型,其调用格式为SYS=tf(NUM,DEN)【例 3.1】若给定系统的传递函数为18(s2)G(s) (s15)(s25)(s0.4)则可以将其用 MATLAB 形式表达出来:% MATLAB PROGRAM 3

3、-1num=18* 0, 1, 2; den=conv(conv( 1 15 , 1 25 , 1 0.4 );printsys(num, dens)运行结果:num/den=18S36S340.4S2391S150此例也可建立传递函数模型如下:% MATLAB PROGRAM 3-2num=18* 0, 1, 2; den=conv(conv( 1 15 , 1 25 , 1 0.4 );mod=tf(num, den)运行结果:Transfer function:18S36S340.4S2391S150对于离散时间系统,对式(2.14)差分方程两边取 z 变换,并设y,u及其各阶差分的初始

4、值均为零,可得Y(z) f z f z f z fm1G(z) (3.1mmm1100U(z) g z g z g z gnn1nn11)G(z)称为系统的 z 函数。在 MATLAB 4.2 中,该离散系统也可以由其分子和分母多项式的系数(按 z的降幂排列)所构成的两个向量来唯一确定,即40NUM = f , f , , f mm-10DEN = g , g , , g nn-10在 MATLAB 5 及以后的版本中,可用函数 TF 来建立系统传递函数模型,其调用格式为SYS=tf(NUM,DEN)其中,NUM 和 DEN 的意义同上,T 为采样时间间隔。此外,如果已知二阶系统的两个参数自然

5、频率 和阻尼比 ,则可通n过函数 ORD2 求出此系统传递函数模型和状态方程模型,其调用格式分别为A,B,C,D= ord2( , )n调用结果返回连续二阶系统状态方程的系数矩阵 A, B, C, D 的表达式;NUM,DEN=ord2( , )n调用结果返回连续二阶系统用分子和分母多项式表示的传递函数。传递函数表达式用于单输入单输出(SISO)系统建模非常方便。也可用它来表达多输入多输出(MIMO)系统。MATLAB 提供用传递函数矩阵表达多输入输出系统模型的方法,这儿不再介绍。3.1.2 系统状态空间模型的 MATLAB 实现状态方程是现代控制理论描述系统模型的一种方法。一个线性系统可以采

6、用状态空间形式来表达: AxBuy CxDu(3.2)式中x col(x x x )为n维状态向量,u为r维输入向量,y为m维输出向量。12n41在 MATLAB 4.2 中,该线性系统可以用状态方程系数矩阵,B,C,D来描述。在 MATLAB 5 及以后的版本中,用函数 SS 可以建立一个系统状态方程模型,调用格式为SYS = ss (A, B, C, D)其中,A, B, C, D 为系统状态方程系数矩阵。【例 3.2】若给定系统的状态方程系数矩阵为 40.4 139 150 1 A10010, B 0 , C 0 18 360 , D 0 0 0 则可以将其用 MATLAB 形式表达出来

7、:% MATLAB PROGRAM 3-3a = -40.4 391 150 ; 1 0 0 ; 0 1 0 ; b = 1 0 0 ; c = 0 18 360 ; d = 0 ;printsys ( a, b, c, d )运行结果:a =x1-40.400001.00000 x2x3x1x2x3-391.00000 -150.0000000001.00000b =u11.00000 x1x2x300c =x10 x218.00000 x3y1360.0000042d =u10y1在 MATLAB 5 中,上例可直接调用函数 SS 求得相同结果。对于离散系统来讲,状态空间模型可以写成x(k

8、 Fx(k)Gu(k)(3.3y(k Cx(k Du(k )同样地,离散系统状态空间在 MATLAB 4.2 中也可以简记为F,G,C,D。在 MATLAB 5 及以后的版本中,用函数 SS 也可以建立一个离散系统传递函数模型,其调用格式为SYS = ss (F, G, C, D)其中,F, G, C, D 为离散系统状态方程系数矩阵;T 为采样时间间隔。3.1.3 系统的零极点模型零极点模型实际上是传递函数模型的另一种形式,其方法是对原系统传递函数的分子和分母进行因式分解,以获得系统的零极点表达形式。对于 SISO 系统来讲,其零极点模型可以简记为(sz )(sz ) (sz )G(s) K

9、(3.412m(s p )(s p ) (s p )12n)式中,z i ,m)和 p (j ,n)分别为系统的零极点,K 为系统增益。ij在 MATLAB 4.2 中,不能由零极点表达式建立系统零极点模型,只能由其它模型形式转换得到。在 MATLAB 5 及以后的版本中,系统的零极点模型可以用函数 ZPK 来直接建立系统零极点模型,其调用格式为43SYS=zpk ( Z, P, K )其中,Z, P, K分别为系统的零点、极点和增益。【例 3.3】系统模型同例 3.1,求系统的零极点模型。% MATLAB PROGRAM 3-4Sys=zpk (-2, -15, -25, -0.4 , 18

10、)运行结果:zero/pole/gain:18(s2)(s15)(s25)(s0.4)同时 MATLAB 提供了多项式求根的函数 ROOTS 来求系统的零极点,调用格式为Z = roots(MUM)或P = roots (DEN)其中,NUM、DEN 分别为传递函数模型的分子和分母多项式系数所构成的向量。对于离散系统,也可以用类似的方法获得零极点模型。3.2 系统模型转换的 MATLAB 实现如第二章所述,对系统的数学模型描述主要有微分方程模型、传递函数模型、状态空间模型和零极点模型等形式,这些模型之间存在着内在的等效关系。在一些场合下,需要用其中一种形式的模型,而在另一种场合下可能又需要另外

11、形式的模型,所以研究由一种模型转换为另一种模型具有非常重要的意义。下面介绍模型转换的 MATLAB 实现。MATLAB 4.2 控制系统工具箱提供了系统模型之间相互转换的函数。如:1TF2SS 是用来由系统传递函数模型来求取其状态空间模型,调用格式为A, B, C, D = tf2ss ( NUM, DEN )44其中,NUM、DEN 分别为传递函数模型的分子和分母多项式系数向量;返回结果A, B, C, D为系统状态空间模型系数矩阵。2函数 SS2TF 用系统状态空间模型来求取其传递函数模型,调用格式为NUM, DEN = ss2tf (A, B, C, D, IU )其中,A, B, C,

12、 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

13、, 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;45Newsys = zpk (sys)可将非零极点形式的系统模型 sys 转换成零极点模型 Newsys;Newsy

14、s= ss (sys)可将非状态空间形式的系统模型 sys 转换成状态空间模型。0.04z0.04【例 3.4】将系统G(z) 转换为零极点形式,采样周期为 0.01。z z z0.933用 MATI.AB 编写程序如下:% MATLAB PROGAM3-5num = 0.04 0.04 ;den = 1 1 81 0.9 ;sysl = tf ( num, den, 0.01 ) ;sys2 = zpk ( sysl )% 传递函数模型% 转换为零极点形式运行结果:zero/pole/gain:0.04(z(zz2zsampling time: 0.013.3 系统模型参数获取的 MATLA

15、B 实现在系统分析中,往往需要知道所建立的系统模型的某参数以便直接利用参数中的有关数据。为此,MATLAB 提供了专用函数 TFDATA,SSDATA,调用格式分别为ZPKDATA 和num, den = tfdata (sys, v)z, p, k = zpkdata (sys)A, B, C, D = ssdata (sys)46【例 3.5】求取例 3.4 给定的传递函数模型分子多项式和分母多项式系数向量。在 MATLAB COMMAND 窗口下键入:num, nen, Ts = tfdata ( sys, v)num = 000.0400 0.0400den = 1.0000 -2.0

16、000 81.0000 0.9000Ts = 0.01003.4 系统变量名的设置在系统运算、连接和分析时,为一目了然地知道系统变量的物理意义及这些 MATLAB 中可用函数 SET 给变量定名。1【例 3.6】建立系统G(s) 模型,且输入名为 Threst,输出名为 Velocity。s10用 MATLAB 编写程序如下% MATLAB PROGRAM 3-6sys = tf ( l1 10 );set (sys, inputName, Threst, outputName, Velocity );sys运行结果:Transfer function form input Thrust to

17、 output Velocity:1s103.5 系统模型的连接一个系统是由许多环节或子系统按一定方式连接起来组合而成,它们之间连接方式有串联、并联、反馈、附加等。MATLAB 提供了各类模型连接函数。473.5.1 模型串联函数 SERIES 用于两个线性模型串联,调用格式为sys = series ( sys1, sys2 )图 3.1 是一个单输入、单输出(SISO)串联模型,sys1,sys2 和 sys 的关系如图示。该函数的执行结果等价于 sys = sysl sys2。*对于多输入多输出(MIMO)系统,函数 SERIES 的调用格式为sys = series ( sys1, s

18、ys2, outputs1, inputs2 )函数执行系统 sysl 和系统 sys2 串联时,将系统 sysl 的输出端 1 和系统 2 的输入端 2 连接。如图 3.2 所示。系统端口名称可用函数 SET 定名(见 3.4 图 3.1 SISO 模型串联图 3.2 MIMO 模型串联3.5.2 模型并联函数 PARALLEL 用于两个模型并联,调用格式为sys = parallel ( sys1, sys2 )其中,sysl, sys2 和 sys 关系如图 3.3 所示。该函数执行结果等价于 sys = sysl + sys2。对于 MIMO 系统,函数 PARALLEL 的调用格式为

19、sys = parallel (sysl, sys2, IN1, IN2, OUT1, OUT2)函数执行系统 sys1 和 sys2 并联时,将 sys1 的输入端 IN1 和 sys2 的输入端IN2 连接,sys1 的输出端 OUT1 和 sys2 的输出端 OUT2 连接起来,如图 3.4 所示。48图 3.3 SISO 模型并联图 3.4 MIMO 模型并联3.5.3 反馈连接函数 FEEDBACK 用于模型的反馈连接,调用格式为sys = feedback ( sys, sys2, sign )其中,sys1,sys2 和 sys 如图 3.5 所示,当采用负反馈时,sign 可忽

20、略;当采用正反馈时,sign = +1。sys = feedback (sys1, sys2, FEEDOUT, sign )函数执行反馈连接时,将 sys2 输出端 FEEDOUT 反馈直接至 sys1 的输入端FEEDIN,如图 3.6 所示。图 3.5 系统反馈连接图 3.6 MIMO 系统反馈连接2s 5s1s(s2)s102【例 3.7】已知两个系统分别为G(s) , H(s) s 2s32Velocity(s)G(s)输入名:Torgue,输出名:Velocity,求:。Torgue(s) 1G(s)H(s)用 MATLAB 编写程序如下:% MATLAB PROGRAM 3-74

21、9G = tf ( 2 5 1 , 1 2 3 , inputname, Torgue, outputname, Velocity ) ;H = zpk ( 0 2 , 10 , 1 ) ;Cloop = feedback ( G , H )运行结果:cloop =Zero/pole/gain from input Torgue to output Velocity:(s10)(s2.28)(s0.2192)(s20.4472s2.014)(s24.553s7.449)3.5.4 系统扩展系统扩展就是把两个或多个子系统组合成一个系统组。MATLAB 提供系统扩展的函数 APPEND,调用格式为

22、sys = append ( sys1, sys2, )其中,sys1,sys2,和 sys 如图 3.7 所示。图 3.7 系统扩展若 sys1,sys2,是用传递函数形式描述,则sys10sys2sys 0sys3若 sys1 和 sys2 用状态空间形式描述,则 sys 为50 A 0 x B 0 u x11111 x0 Ax0 B u 22222yC 0 xD 0u 11111 y0 Cx0 D u 222223.6 模型降阶在系统的研究中,模型降阶技术有很重要的作用,其目的是使高阶系统用一个低阶的模型近似,这样高阶系统可按低阶系统处理,为分析设计高阶系统带来方便。模型降阶技术是系统分

23、析、设计和仿真中不可缺少的一环,其基本思想是使原始系统的系数矩阵的阶次降低,并保留原系统的主导特征值和一些重要的状态。在 MATLAB 控制系统工具箱中提供了基于平衡实现降阶函数 BALREAL 和MODRED。函数 BALREAL 计算可控及可观测的 Gram 矩阵,并对原系统进行等价变换,将原系统分成两部分,其中一部分包含原系统矩阵较大奇异值,而另一部分包含较小奇异值,平衡实现系统完全与原系统等价,如下式所示: x t)AAAAxBB u1 b.11 1b.1b.2x t)x 22x (3.5C C C1 xb.2 2bb.1)如果截取对应于小奇异值的子系统,则降阶模型为z A z B u , C z u(3.61b.11 1b.1b.1 1)在 MATLAB 中,函数 BALREAL 的调用格式为51sysb = balreal ( sys ) sysh, g, T, Ti = balreal ( sys )其中,sys 为原系统;sysb 为平衡实现系统,式(3.8)与原系统等价;g

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论