状态空间表达式的MATLAB建模
设本节中,具有r个输入、m个输出的n阶线性定常系统的状态空间表达式为
X
˙
(
t
)
=
A
X
(
t
)
+
B
U
(
t
)
\dot{X}(t)=AX\left(t\right)+BU\left(t\right)
X˙(t)=AX(t)+BU(t)
Y
(
t
)
=
C
X
(
t
)
+
D
U
(
t
)
Y(t)=CX(t)+DU(t)
Y(t)=CX(t)+DU(t)
其中,
X
(
t
)
=
[
x
1
(
t
)
⋮
x
n
(
t
)
]
,
U
(
t
)
=
[
u
1
(
t
)
⋮
u
r
(
t
)
]
,
Y
(
t
)
=
[
y
1
(
t
)
⋮
y
m
(
t
)
]
X(t)=\left[\begin{matrix}x_1(t)\\\vdots\\x_n(t)\\\end{matrix}\right],U(t)=\left[\begin{matrix}u_1(t)\\\vdots\\u_r(t)\\\end{matrix}\right],Y(t)=\left[\begin{matrix}y_1(t)\\\vdots\\y_m(t)\\\end{matrix}\right]
X(t)=⎣⎢⎡x1(t)⋮xn(t)⎦⎥⎤,U(t)=⎣⎢⎡u1(t)⋮ur(t)⎦⎥⎤,Y(t)=⎣⎢⎡y1(t)⋮ym(t)⎦⎥⎤
A
=
[
a
11
⋯
a
1
n
⋮
⋱
⋮
a
n
1
⋯
a
n
n
]
,
B
=
[
b
11
⋯
b
1
r
⋮
⋱
⋮
b
n
1
⋯
b
n
r
]
,
C
=
[
c
11
⋯
c
1
n
⋮
⋱
⋮
c
m
1
⋯
c
m
n
]
,
D
=
[
d
11
⋯
d
1
r
⋮
⋱
⋮
d
m
1
⋯
d
m
r
]
A=\left[\begin{matrix}a_{11}&\cdots&a_{1n}\\\vdots&\ddots&\vdots\\a_{n1}&\cdots&a_{nn}\\\end{matrix}\right],B=\left[\begin{matrix}b_{11}&\cdots&b_{1r}\\\vdots&\ddots&\vdots\\b_{n1}&\cdots&b_{nr}\\\end{matrix}\right],C=\left[\begin{matrix}c_{11}&\cdots&c_{1n}\\\vdots&\ddots&\vdots\\c_{m1}&\cdots&c_{mn}\\\end{matrix}\right],D=\left[\begin{matrix}d_{11}&\cdots&d_{1r}\\\vdots&\ddots&\vdots\\d_{m1}&\cdots&d_{mr}\\\end{matrix}\right]
A=⎣⎢⎡a11⋮an1⋯⋱⋯a1n⋮ann⎦⎥⎤,B=⎣⎢⎡b11⋮bn1⋯⋱⋯b1r⋮bnr⎦⎥⎤,C=⎣⎢⎡c11⋮cm1⋯⋱⋯c1n⋮cmn⎦⎥⎤,D=⎣⎢⎡d11⋮dm1⋯⋱⋯d1r⋮dmr⎦⎥⎤
A——n
×
\times
×n阶矩阵,反映系统内部状态的联系,称为系统矩阵
B——n
×
\times
×r阶矩阵,反映输入对系统内部状态的作用,称为输入矩阵(或控制矩阵)
C——m
×
\times
×n阶矩阵,反映系统内部状态对输出的作用,称为输出矩阵
D——m
×
\times
×r阶矩阵,反映输入对输出的直接传递关系,称为直接传递矩阵。(多数情况下系统存在着惯性,其直接传递矩阵通常为零)
在MATLAB中,将各个矩阵记为
>> X=[x1;x2;...;xn];
>> U=[u1;u2;...;un];
>> Y=[y1;y2;...;yn];
>> A=[a1 a2 ... a1n;a21 a22 ... a2n;......;an1 an2 ... ann];
>> B=[b1 b2 ... b1r;b21 b22 ... b2r;......;bn1 bn2 ... bnr];
>> C=[c1 c2 ... c1n;c21 c22 ... c2n;......;cm1 cm2 ... cmn];
>> D=[d1 d2 ... d1r;d21 d22 ... d2r;......;dm1 dm2 ... dmr];
需要用到的函数:
ss函数:用于建立系统的状态空间模型。
>> g=ss(A,B,C,D);
使用范例:
已知系统的状态空间表达式
X
˙
=
[
3
1
0.5
1
1.2
0.1
6
0
0.1
]
X
+
[
1
0
3
]
U
\dot{X}=\left[\begin{matrix}\begin{matrix}3&1\\\end{matrix}&0.5\\\begin{matrix}\begin{matrix}1\\1.2\\\end{matrix}&\begin{matrix}0.1\\6\\\end{matrix}\\\end{matrix}&\begin{matrix}0\\0.1\\\end{matrix}\\\end{matrix}\right]X+\left[\begin{matrix}1\\0\\3\\\end{matrix}\right]U
X˙=⎣⎡3111.20.160.500.1⎦⎤X+⎣⎡103⎦⎤U
Y
=
[
1
1
2
]
X
Y=\left[\begin{matrix}1&1&2\\\end{matrix}\right]X
Y=[112]X
MATLAB中建立系统的状态空间表达式和传递函数的多项式形式和零-极点形式模型。
>> A=[3 1 0.5; 1 0.1 0; 1.2 6 0.1];
%输入系统矩阵
>> B=[1;0;3];
%输入输入矩阵
>> C=[1 1 2];
%输入输出矩阵
>> D=0;
>%输入直接传递矩阵
>> g=ss(A,B,C,D)
%建立系统状态空间表达式模型
g =
A =
x1 x2 x3
x1 3 1 0.5
x2 1 0.1 0
x3 1.2 6 0.1
B =
u1
x1 1
x2 0
x3 3
C =
x1 x2 x3
y1 1 1 2
D =
u1
y1 0
Continuous-time state-space model.
>> g=tf(g)
%执行此命令得到系统多项式形式的传递函数模型
g =
7 s^2 - 13.9 s + 8.82
-----------------------------
s^3 - 3.2 s^2 - 0.99 s - 2.87
Continuous-time transfer function.
>> g=zpk(g)
%执行此命令得系统零-极点形式的传递函数模型
g =
7 (s^2 - 1.986s + 1.26)
----------------------------------
(s-3.681) (s^2 + 0.4808s + 0.7797)
Continuous-time zero/pole/gain model.
>> [num,den]=ss2tf(A,B,C,D)
%执行此命令得系统传递函数多项式形式的分子、分母多项式系数
num =
0 7.0000 -13.9000 8.8200
den =
1.0000 -3.2000 -0.9900 -2.8700
>> [z,p]=ss2zp(A,B,C,D)
%执行此命令得系统得零-极点。z为零点,p为极点。
z =
0.9929 + 0.5237i
0.9929 - 0.5237i
p =
3.6808 + 0.0000i
-0.2404 + 0.8497i
-0.2404 - 0.8497i