状态空间表达式有很多种,选择的状态空间变量不同,得到的状态空间表达式就不同,下文是介绍了matlab中tf2ss得到的状态空间方程的推导过程,并介绍了其推导过程与信号与系统中的中间变量法的联系。
假设现在有微分方程:
a
y
′
(
t
)
+
b
y
(
t
)
=
a
1
f
′
(
t
)
+
b
1
f
(
t
)
ay'(t)+by(t)=a_1f'(t)+b_1f(t)
ay′(t)+by(t)=a1f′(t)+b1f(t)
则设置中间变量
x
(
t
)
x(t)
x(t)
有:
y
(
t
)
=
a
1
x
′
(
t
)
+
b
1
x
(
t
)
y(t)=a_1x'(t)+b_1x(t)
y(t)=a1x′(t)+b1x(t)
f
(
t
)
=
a
x
′
(
t
)
+
b
x
(
t
)
f(t)=ax'(t)+bx(t)
f(t)=ax′(t)+bx(t)
利用LTI性质可以推导如下:
这个过程主要是通过凑输出,将输出凑为
y
(
t
)
y(t)
y(t)从而看
x
(
t
)
x(t)
x(t)的取值。
那么这个中间变量法和状态空间方程有什么关系呢:
可以尝试下列代码(matlab)
A=[-6 11 -6;1 0 0;0 1 0];
B=[1;0;0];
C=[6 4 72];
D=[0];
[num,den]=ss2tf(A,B,C,D)
[a,b,c,d]=tf2ss(num,den)
我们为了将一个传递函数(单输入单输出)转化为状态空间方程,我们可以用现代控制理论中找状态变量的方式,也可以用中间变量作为桥梁来写出状态空间方程。
对于下列这样的传递函数应该如何写出状态空间方程呢:
我们可以将其写成微分方程的形式:
y
′
′
′
(
t
)
+
6
y
′
′
(
t
)
−
11
y
′
(
t
)
+
6
y
(
t
)
=
6
f
′
′
(
t
)
+
4
f
′
(
t
)
+
72
f
(
t
)
y'''(t)+6y''(t)-11y'(t)+6y(t)=6f''(t)+4f'(t)+72f(t)
y′′′(t)+6y′′(t)−11y′(t)+6y(t)=6f′′(t)+4f′(t)+72f(t)
根据中间变量法我们有:
y
(
t
)
=
6
m
′
′
(
t
)
+
4
m
′
(
t
)
+
72
m
(
t
)
y(t)=6m''(t)+4m'(t)+72m(t)
y(t)=6m′′(t)+4m′(t)+72m(t)
f
(
t
)
=
m
′
′
′
(
t
)
+
6
m
′
′
(
t
)
−
11
m
′
(
t
)
+
6
m
(
t
)
f(t)=m'''(t)+6m''(t)-11m'(t)+6m(t)
f(t)=m′′′(t)+6m′′(t)−11m′(t)+6m(t)
我们将状态变量设为
x
=
[
m
′
′
m
′
m
]
x= \left[ \begin{matrix} m''\\ m'\\ m \end{matrix} \right]
x=
m′′m′m
则有
x
˙
=
[
−
6
−
11
−
6
1
0
0
0
1
0
]
x
+
[
1
0
0
]
u
\dot x= \left[ \begin{matrix} -6 & -11 & -6 \\ 1 & 0 & 0 \\ 0 & 1 & 0 \end{matrix} \right] x+\left[ \begin{matrix} 1 \\ 0\\ 0 \end{matrix} \right] u
x˙=
−610−1101−600
x+
100
u
y
=
[
6
4
72
]
x
y= \left[ \begin{matrix} 6 &4&72 \end{matrix} \right] x
y=[6472]x