当前位置:文档之家› 利用MATLAB进行系统模型之间的相互转换

利用MATLAB进行系统模型之间的相互转换


J=[-2+j*4 0 0;0 -2-j*4 0;0 0 -10]; JJ=poly(J) JJ=
1 14 60 200 aa1=JJ(2);aa2=JJ(3);aa3=JJ(4); %*****State feedback gain matrix K can be given by ***** K=[aa3-a3 aa2-a2 aa1-a1]*(inv(P)) K=
%*****Enter matrices A and B*****
A=[0 1 0;0 0 1;-1 -5 -6]; B=[0;0;1];
%***** Define the controllability matrix Q*****
Q=[B A*B A^2*B];
%*****Check the rank of matrix Q*****
利用 MATLAB 求解极点配置问题
用 MATLAB 易于求解极点配置问题。现在我们来 求解系统方程为
x& = Ax + Bu
式中
⎡0 1 0 ⎤
⎡0⎤
A = ⎢⎢0 0 1 ⎥⎥,B = ⎢⎢0⎥⎥
⎢⎣− 1 −5 −6⎥⎦
⎣⎢1 ⎥⎦
采用状态反馈控制u = −Kx ,希望系统的闭环极
点为 s =μi(i=1,2,3),其中
s3
+ 14s2
s +
56s
+ 160
(1.22)
对该系统,有多个(无穷多个)可能的状态空间表达式, 其中一种可能的状态空间表达式为:
⎡ x&1 ⎤ ⎡0 1
⎢ ⎢
x& 2
⎥ ⎥
=
⎢⎢0
0
⎢⎣ x&3 ⎥⎦ ⎢⎣−160
0
⎤⎡ x1 ⎤ ⎡0 ⎤
1
⎥ ⎥
⎢ ⎢
x2
⎥ ⎥
+
⎢⎢1
⎥ ⎥
u
−56 −14⎥⎦⎢⎣ x3 ⎥⎦ ⎢⎣−14⎥⎦
MATLAB Program 5 %--------Pole placement---------
以上就是下列 4 个传递函数的 MATLAB 表达式:
Y1 ( s) U1(s)
=
s2
s+4 + 4s +
25
,
Y1 ( s) U 2 (s)
=
s2
s+5 + 4s +
, 25
Y2 (s) U1(s)
=
s2
− 25 + 4s +
25
,
Y2 (s) = s-25 U2 (s) s2 + 4s + 25
A=[0 1; -25 -4]; B=[1 1; 0 1]; C=[1 0; 0 1];
D=[0 0; 0 0] [NUM,den]=ss2tf(A,B,C,D,1) NUM=
0 14 0 0 -25 den= 1 4 25 [NUM,den]=ss2tf(A,B,C,D,2) NUM=
0 1.0000 5.0000 0 1.0000 -25.000 den= 1 4 25
对多输入的系统,必须具体化 iu。例如,如果系统有 3 个输 入(u1,u2,u3),则 iu 必须为 1、2 或 3 中的一个,其中 1 表 示 u1,2 表示 u2,3 表示 u3。
如果系统只有一个输入,则可采用 [num,den] = ss2tf (A,B,C,D)
或 [num,den] = ss2tf (A,B,C,D,1)
考虑由下式定义的系统:
⎡ ⎢⎣
x& 1 x& 2
⎤ ⎥⎦
=
⎡0 ⎢⎣−
25
1⎤ −4⎥⎦
⎡ ⎢⎣
x1 x2
⎤ ⎥⎦
+
⎡1 ⎢⎣0
1⎤⎡u1 ⎤ 1⎥⎦⎢⎣u2 ⎥⎦
⎡ ⎢⎣
y1 y2
⎤ ⎥⎦
=
⎡1 ⎢⎣0
0⎤ 1 ⎥⎦
⎡ ⎢⎣
x1 x2
⎤ ⎥⎦
+
⎡0 ⎢⎣0
0⎤⎡u1 ⎤ 0⎥⎦⎢⎣u2 ⎥⎦
该系统有两个输入和两个输出,包括 4 个传递函数: Y1(s)/U1(s)、Y2(s)/U1(s)、Y1(s)/U2(s)和 Y2(s)/U2(s) (当考虑输入 u1 时,可设 u2 为零。反之亦然),见下列 MATLAB 输出:
⎡199 55 8

φ ( A) = A3 + 14A2 + 60A + 200I = ⎢⎢− 8 159 7
⎥ ⎥
⎣⎢− 7 −43 117⎥⎦
实际上,
Polyvalm(poly(J), A) ans=
199 55 8 -8 159 7 -7 -43 117
利用爱克曼公式,MATLAB Program 5 将求出状 态反馈增益矩阵 K。
μ1 = −2 + j4, μ2 = −2 − j4, μ3 = −10
现求所需的状态反馈增益矩阵 K。
如果在设计状态反馈控制矩阵 K 时采用变换矩阵
P,则必须求特征方程|sI-A|=0 的系数a1、a2、和a3 。
这可通过给计算机输入语句
P = poly(A) 来实现。在计算机屏幕上将显示如下一组系数:
− 2− j4
0
⎥ ⎥
⎢⎣0 0 μ3 ⎥⎦ ⎢⎣ 0
0 −10⎥⎦
从而可利用如下 poly(J)命令来完成,即
J = [−2 + 4*i 0 0;0 − 2 − 4*i 0;0 0 −10]; Q = poly(J) Q=
1 14 60 200
因此,有
a1*
=
aa1 =
Q(2),
a
* 2
=
aa2
1-1
Num=[0 0 1 0];
Den=[1 14 56 160];
[A,B,C,D]
=
tf2ss(num,den)
A=
-14 -56 -160
10
0
01
0
B=
1 0 0
C=
010
D=
0
2 由状态空间表达式到传递函数的变换
为了从状态空间方程得到传递函数,采用以下命令:
[num,den] = ss2tf [A,B,C,D,iu]
=
Q(3), a3*
=
aa3
=
Q(4)
即对于 ai* ,可采用 aai 。
故状态反馈增益矩阵 K 可由下式确定:
K = [ a3∗ − a3 a2∗ − a2 a1∗ − a1 ] P −1

K = [ aa3 − a3 aa2 − a2 aa1 − a1 ] * (inv(P))
采用变换矩阵 P 求解该例题的 MATLAB 程序如
利用 MATLAB 进行系统模型之间的相互转换
本节将讨论系统模型由传递函数变换为状态方程,反之亦
然。现讨论如何由传递函数变换为状态方程。
将闭环传递函数写为
Y (s) U (s)
=
含s的分子多项式 含s的分母多项式
=
num den
当有了这一传递函数表达式后,使用如下 MATLAB 命令:
[A, B, C, D] = tf2ss (num, den)
1 0 − 25.1026
0
⎤⎡ x1 ⎤ ⎡0

1
⎥ ⎥
⎢ ⎢
x
2
⎥ ⎥
+
⎢⎢25.04
⎥⎥u
−5.03247⎥⎦⎢⎣ x3 ⎥⎦ ⎢⎣− 121.005⎥⎦
y = [1
⎡ x1 ⎤
0
0]⎢⎢
x
2
⎥ ⎥
⎢⎣ x3 ⎥⎦
MATLAB Program 1-2 将产生给定系统的传递函数。所得传 递函数为:
(见例 1.3 和 MTLAB Program1-2)
MTLAB Program 1-2 A=[0 1 0; 0 0 1; -5.008 -5.032471]; B=[0; 25.04; -121.005]; C=[1 0 0]; D=[0]; [num,den]=ss2tf(A,B,C,D)
-25.1026
y = [1
⎡ x1 ⎤
0
0]⎢⎢
x2
⎥ ⎥
+
[0]u
⎢⎣ x3 ⎥⎦
另外一种可能的状态空间表达式(在无穷个中)为:
⎡ x&1 ⎤ ⎡−14 −56 −160⎤⎡ x1 ⎤ ⎡1 ⎤
⎢ ⎢
x& 2
⎥ ⎥
=
⎢⎢1
0
0
⎥ ⎥
⎢ ⎢
x2
⎥ ⎥
+
⎢⎢0⎥⎥
u
⎢⎣ x&3 ⎥⎦ ⎢⎣0 1 0 ⎥⎦⎢⎣ x3 ⎥⎦ ⎢⎣0⎥⎦
A = [0 1 0; 0 0 1; -1 -5 -6]; P = poly(A) P=
1.0000 6.0000 5.0000 1.0000
则a1 = a1 = P(2), a2 = a2 = P(3), a3 = a3 = P(4) 。
为了得到变换矩阵 P,首先将矩阵 Q 和 W 输入计
算机,其中
Y (s) =
25.04s + 5.008
U (s) s3 + 5.0325s 2 + 25.1026s + 5.008
[例 2] 考虑一个多输入-多输出系统。当系统输出多于一个 时,MATLAB 命令:
[NUM,den] = ss2tf (A,B,C,D,iu)
对每个输入产生所有输出的传递函数(分子系数转变为具有 与输出相同行的矩阵 NUM)。
相关主题