#2.6 应用MATLAB进行模型处理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.6 应用MATLAB 进行模型处理
线性系统理论中常用的数学模型有微分方程模型、传递函数模型等,而这些模型之间
又有某些内在的等效关系。
在MATLAB 中,与传递函数的具体形式相对应,又有tf 对象和zpk 对象之分,我们分别称为有理分式模型和零极点模型。
在本节,就线性定常时不变系统(LTI )数学模型分析中用到的MATLAB 方法作一简要介绍,主要有拉氏变换、传递函数的转换、控制系统的特征根及零极点图、方框图模型的传递函数、符号模型的运算等。
2.6.1 拉氏变换与反变换
在MATLAB 中,可以采用符号运算工具箱(Symbolic Math Toolbox)进行拉氏变换和反变换,通过函数“Laplace ”和“iLaplace ”来实现。
1.拉氏变换
“Laplace ”的调用格式如下:
L=Laplace(F):是缺省独立变量t 的关于符号向量F 的拉氏变换,缺省返回关于s 的函数。
L=Laplace(F,t):是一个关于t 代替缺省s 项的拉氏变换。
L=Laplace(F,w,z):是一个关于z 代替缺省s 项的拉氏变换。
例2-15 求时域函数f(t)=6cos(3t)+e -3t
cos(2t)-5sin(2t)的拉氏变换。
解 程序如下:
运行结果: y =
6*s/(s^2+9)+1/4*(s+3)/(1/4*(s+3)^2+1)-10/(s^2+4) 即 4
10
4)3(396)(2
22+-+++++=
s s s s s s y 2.拉氏反变换
“iLaplace ”的调用格式如下:
F=iLaplace(L):是缺省独立变量s 的关于符号向量L 的拉氏反变换,缺省返回关于t 的函数。
F=iLaplace(L,y):是一个关于y 代替缺省t 项的拉氏变换。
F=iLaplace(L,y,x):是一个关于x 代替缺省t 项的拉氏变换。
例2-17 求函数16
)4(5
416)(22++++
+=
s s s s G 的拉氏反变换。
解 程序如下:
F =
8*sin(2*t)+exp(-4*t)*cos(4*t)+1/4*exp(-4*t)*sin(4*t) 例2-17 求函数)
()()(2
c s b s a
s s G +++=的拉氏反变换。
解 程序如下:
运行结果: F =
((-(b-c)*(-b+a)*t-a+c)*exp(-b*t)+(a-c)*exp(-c*t))/(b-c)^2
2.6.2 传递函数
1.有理分式模型
传递函数的分子和分母均为多项式的形式称为有理分式模型,如下式所示。
n
n n n m
m m m a s a s a s a b s b s b s b s R s C s G ++++++++==----11
101110)()()( 在MATLAB 中,传递函数分子和分母多项式系数用行向量表示。
例如多项式P(s)=s 3
+2s+4,其输入为
P=[1 0 2 4]
传递函数分子或分母为因式时,调用conv()函数来求多项式向量。
例如P(s)=5(s+2)
(s+3)(10s 2
+20s+3),其输入为
P=5*conv([1 2],conv([1 3],[10 20 3]))
调用函数“tf ”可建立传递函数的有理分式模型,其调用格式如下:
G=tf(num,den)
例2-19 已知某一系统的微分方程如下,试求其传递函数。
r r
r r c c c c c c 20127253620126)4()5(+++=+++++ 解 程序如下:
运行结果:
Transfer function:
s^3 + 7 s^2 + 12 s + 20
----------------------------------------- s^5 + 6 s^4 + 12 s^3 + 20 s^2 + 36 s + 25
例2-20 将传递函数)
625)(5()4()(2
322
+++++=s s s s s s s G 转换为有理分式模型。
解 程序如下:
运行结果:
Transfer function:
s^2 + 8 s + 16
--------------------------------------- s^6 + 10 s^5 + 27 s^4 + 16 s^3 + 30 s^2
2.零极点模型
传递函数的分子和分母均为因式的形式称为零极点模型,如下式所示。
)
())(()())(()()()(210210n m p s p s p s a z s z s z s b s R s C s G ------=
= MATLAB 控制工具箱提供了零极点模型与有理分式模型之间的转换函数,调用格式分别为
[z,p,k]=tf2zp(num,den) [num,den]=zp2tf(z,p,k)
其中,前一个函数可将有理分式模型转换为零极点模型,而后一个函数可将零极点模型转换为有理分式模型。
例2-21 将传递函数6
2512
186)(2
32+++++=s s s s s s G 转换为零极点模型。
解 程序如下:
运行结果: z = -2 -1
p = -4.8428 -0.0786 + 1.1103i -0.0786 - 1.1103i k = 6
即变换后的零极点模型为
)
1103.10786.0)(1103.10786.0)(8424.4()
1)(2(6)(i s i s s s s s G ++-++++=
验证:调用zp2tf()函数,可得到原传递函数模型,如
[num,den]=zp2tf(z,p,k); %由零极点形式转换为传递函数形式 G=tf(num,den) %形成传递函数表达式 运行结果:
Transfer function: 6 s^2 + 18 s + 12 --------------------- s^3 + 5 s^2 + 2 s + 6
3.部分分式展开
进行拉氏变换或z 变换的分析计算时,有时希望对传递函数进行形如下式所示的部分分式展开,然后再做其他处理。
n
n p s r p s r p s r s R s C s G ++
++++==
2211)()
()( MATLAB 有一个命令可用于求传递函数的部分分式展开,直接求出展开式中的留数、极
点和余数。
调用格式如下:
[r,p,k]=residue(num,den)
其中,num 是分子多项式系数行向量,den 是分母多项式系数行向量。
例2-22 设传递函数如下,试进行部分分式展开。
6
1166
352)(2
3
23++++++=s s s s s s s G 解 程序如下:
运行结果: r = -6.0000 -4.0000 3.0000 p = -3.0000 -2.0000 -1.0000 k = 2
其中,留数变成列向量r ,极点变成列向量p ,而余数变成行向量k 。
由此可得出进行部分分式展开式:
21
3
2436)(++++-++-=
s s s s G 2.6.3 控制系统的特征根及零极点图
闭环系统的特征根和开环传递函数的零极点分布图是控制系统分析中经常碰到的。
1.系统的特征根
MATLAB 提供了多项式求根函数roots(),其调用格式为
r=roots(P)
其中,P 为多项式。
例如,特征方程043)(23=++=s s s D ,其根可由下面语句求得
>>r=roots([1 3 0 4]) >>r = -3.3553 0.1777 + 1.0773i 0.1777 - 1.0773i
反过来,若已知特征多项式的特征根,可调用MATLAB 中的poly()函数来求得多项式降幂排列时各项的系数。
如上例
>>poly(r)
p = 1.0000 3.0000 0.0000 4.0000
函数polyval()可用来求取给定变量值时多项式的值,其调用格式为 polyval(p,a)
其中,P 为多项式,a 为给定变量值。
例如,求)6)(43()(23+++=s s s s D 在s=-4时的值,语句如下 >>d=conv([1 3 0 4],[1 6]); >>value=polyval(d,-4) value=
-24 2.零极点图
传递函数在复平面上的零、极点图,采用pzmap()函数来完成,零点用“°”表示,极点用“×”表示。
其调用格式为
[p,z]= pzmap(num,den) 其中,p 为传递函数den num )(=s G 的极点,z 为den
num )(=s G 的零点。
例2-23 某系统开环传递函数如下,试求其零、极点图。
)15.0)(125.0()15.0(10)()(2++++=
s s s s s s H s G 解 程序如下:
零、极点图如图2-42所示。
图2-42 系统开环零极点图
2.6.4 控制系统的方框图模型
若已知控制系统的方框图,使用MATLAB 函数可实现方框图的转换。
1.串联
如图2-43所示,两个系统G 1(s )和G 2(s )相串联,在MATLAB 中可用串联函数series()来求合成系统,其调用格式为
[num,den]=series(num1,den1,num2,den2)
其中,1den 1num )(1=s G ,2den 2num )(2=s G ,den
num )(=s G 。
也可直接采用以下方式:
G (s )= G 2(s )*G 1(s )
提示:对于单输入单输出(SISO )系统,G =G 2*G 1=G 1*G 2;对于多输入多输出(MIMO )系统,只有部分信号串联连接时,采用以下调用格式:
G =series(G 1,G 2,y1,u2) % G 1的输出y 1与G 2的输入u 2直接连接
例2-24 两个系统的传递函数如下,求它们串联后系统总的传递函数。
,2
545
622321+++++=s s s s s G 231272
22++++=s s s s G 解 程序如下:
运行后分别得G 1、G 2、G 如下: Transfer function: 2 s^2 + 6 s + 5 --------------------- s^3 + 4 s^2 + 5 s + 2 Transfer function: s^2 + 7 s + 12 -------------- s^2 + 3 s + 2
Transfer function:
2 s^4 + 20 s^
3 + 71 s^2 + 107 s + 60 ---------------------------------------- s^5 + 7 s^
4 + 19 s^3 + 2
5 s^2 + 1
6 s + 4 2.并联
如图2-44所示,两个系统G 1(s )和G 2(s )相并联,在MATLAB 中可用并联函数parallel()来实现合成系统,其调用格式为
[num,den]=parallel(num1,den1,num2,den2)
图2-43 串联连接 图2-44 并联连接
图2-45 反馈连接
式中,1den 1num )(1=s G ,2den 2num )(2=s G ,den
num )(=s G 。
提示:对于SISO 系统,可直接采用G =G 1+G 2得到并联连接的合成系统:对于MIMO 系统,
当需要指定信号并联连接关系时,采用以下调用格式:
G =parallel(G 1,G 2,u1,u2,y 1,y 2) % u1,u2,y1,y2分别为第一系统G 1和第二系统G 2
的输入和输出编号
例2-25 两个系统的传递函数如下,求它们并联后系统总的传递函数。
,2
545
621+++=s s s G 218232
22++++=s s s s G 解 程序如下:
运行结果:
Transfer function:
4 s^4 + 21 s^3 + 137 s^2 + 119 s + 16 ------------------------------------- 8 s^4 + 82 s^3 + 102 s^2 + 46 s + 4 3.反馈
反馈连接如图2-45所示,前向通路传递函数为G (s ),反馈通路传递函数为H (s ),在MATLAB 中可用feedback ()函数来实现反馈连接,其调用格式为
[num,den]=feedback (numg,deng,numh,denh,sign) 其中,deng numg )(=s G ,denh numh )(=s H ,den num )(=Φs ,sign 为
反馈极性,若为正反馈其值为1,若为负反馈其值为-1。
例2-26 在图2-45的系统中,已知,1
)(,2
51)(2
s s H s s s s G =+++=求闭环传递函数。
解 程序如下:
运行结果:
Transfer function:
s^2 + s
----------------------------- s^4 + 4 s^3 + 5 s^2 + 3 s + 1
2.6.5 符号模型的运算
当控制系统的微分方程、传递函数、方框图等模型中的参数为符号而非数字时,数学模型的运算和变换可借助MATLAB 中的符号运算工具箱(Symbolic Math Toolbox)进行。
例2-27 RLC 电路的结构图如图2-46所示,求此系统的传递函数。
解 程序如下:
提示:如果结果显示是一较为复杂的表达式,可用函数“simple([变量名])”对结果进行简化处理,从而得到较为简单的表达式。
求得系统的传递函数为: P =
1/Cs/(Ls+R)/(1+1/Cs/(Ls+R)) 简化后得:
1/(Cs*Ls+Cs*R+1)
故可得到系统的闭环传递函数为
1
1
)(2
+
+=
CRs CLs s G
图2-46 RLC 网络的结构框图。