状态空间

状态空间（State-space representation），是控制工程中的一个名词。状态是指在系统中可决定系统状态、最小数目变量的有序集合。而所谓状态空间则是指该系统全部可能状态的集合。简单来说，状态空间可以视为一个以状态变数为坐标轴的空间，因此系统的状态可以表示为此空间中的一个向量。

状态空间表示法即为一种将物理系统表示为一组输入、输出及状态的数学模式，而输入、输出及状态之间的关系可用许多一阶微分方程来描述。

为了使数学模式不受输入、输出及状态的个数所影响，输入、输出及状态都会以向量的形式表示，而微分方程（若是线性非时变系统，可将微分方程转变为代数方程）则会以矩阵的形式来表示。

状态空间表示法提供一种方便简捷的方法来针对多输入、多输出的系统进行分析并建立模型。一般频域的系统处理方式需限制在常系数，启始条件为0的系统。而状态空间表示法对系统的系数及启始条件没有限制。

## 状态变量

<image>

系统的状态变数是指系统变数中，可以表示任一时间系统完整状态的最小子集合。要表示一系统需要的状态变数最小值n，通常也是该系统微分方程式的阶数。若系统是以传递函数来表示，状态变数的最小个数等于传递函数分母多项式的阶数。在电路中状态变数的个数常常就是电路中储能元件（如电容器及电感器）的个数。

## 线性系统

一个有$p$个输入、$q$个输出及$n$个状态变数的线性系统，可以用以下的状态空间表示法来表示：

$$\dot{\mathbf{x}}(t) = A(t) \mathbf{x}(t) + B(t) \mathbf{u}(t)$$

$$\mathbf{y}(t) = C(t) \mathbf{x}(t) + D(t) \mathbf{u}(t)$$

其中:

$\mathbf{x}(\cdot)$称为状态向量， $\mathbf{x}(t) \in \mathbb{R}^n$;

$\mathbf{y}(\cdot)$称为输出向量， $\mathbf{y}(t) \in \mathbb{R}^q$;

$\mathbf{u}(\cdot)$称为输入向量（或控制向量）， $\mathbf{u}(t) \in \mathbb{R}^p$;

$A(\cdot)$称为状态矩阵， $\operatorname{dim}[A(\cdot)] = n \times n$,

$B(\cdot)$称为输入矩阵， $\operatorname{dim}[B(\cdot)] = n \times p$,

$C(\cdot)$称为输出矩阵， $\operatorname{dim}[C(\cdot)] = q \times n$,

$D(\cdot)$称为前馈矩阵（若系统没有直接从输入到输出的路径，此矩阵为零矩阵）， $\operatorname{dim}[D(\cdot)] = q \times p$,

$\dot{\mathbf{x}}(t) := \frac{\operatorname{d}}{\operatorname{d}t} \mathbf{x}(t)$.

通式中所有的矩阵均允许随着时间而变化，此时所表示的就是线性时变系统。若表示的是线性非时变系统，则通式的矩阵都不会随着时间变化。时间变数$t$可以是连续的（例如$t \in \mathbb{R}$）或是离散的（例如$t \in \mathbb{Z}$）。若是后者，其时间变数一般会标示为$k$。混合系统允许同时使用连续及离散的时域。依不同的假设，状态空间表示法可以是以下的这些形式：

系统形式｜状态空间模型

连续非时变系统｜$\dot{\mathbf{x}}(t) = A \mathbf{x}(t) + B \mathbf{u}(t)$ $\mathbf{y}(t) = C \mathbf{x}(t) + D \mathbf{u}(t)$

连续时变系统｜$\dot{\mathbf{x}}(t) = \mathbf{A}(t) \mathbf{x}(t) + \mathbf{B}(t) \mathbf{u}(t)$ $\mathbf{y}(t) = \mathbf{C}(t) \mathbf{x}(t) + \mathbf{D}(t) \mathbf{u}(t)$

离散非时变系统｜$\mathbf{x}(k+1) = A \mathbf{x}(k) + B \mathbf{u}(k)$ $\mathbf{y}(k) = C \mathbf{x}(k) + D \mathbf{u}(k)$

离散时变系统｜$\mathbf{x}(k+1) = \mathbf{A}(k) \mathbf{x}(k) + \mathbf{B}(k) \mathbf{u}(k)$ $\mathbf{y}(k) = \mathbf{C}(k) \mathbf{x}(k) + \mathbf{D}(k) \mathbf{u}(k)$

连续非时变系统转换到s域｜$s \mathbf{X}(s) = A \mathbf{X}(s) + B \mathbf{U}(s)$ $\mathbf{Y}(s) = C \mathbf{X}(s) + D \mathbf{U}(s)$

离散非时变系统转换到Z-域｜$z \mathbf{X}(z) = A \mathbf{X}(z) + B \mathbf{U}(z)$ $\mathbf{Y}(z) = C \mathbf{X}(z) + D \mathbf{U}(z)$

### 连续非时变系统的例子

连续线性非时变系统的稳定性及响应特性可以由矩阵A的特征值得到，也可以由系统对应的乘积型传递函数中得到。其型式如下所示：

$$\textbf{G}(s) = k \frac{ (s - z_{1})(s - z_{2})(s - z_{3}) <pre> }{ (s - p_{1})(s - p_{2})(s - p_{3})(s - p_{4}) }$$

传递函数的分母等于$sI - A$的行列式所得的特征多项式：

$\mathbf{\lambda}(s) = |sI - A|$.

其多项式的根即为矩阵A的特征值，也是传递函数的极点。极点可以用来分析系统是否为指数稳定、临界稳定或者根本不稳定。李雅普诺夫稳定性是另一种不需计算特征值，也可以判断稳定性的方式。

由传递函数的分子$\textbf{G}(s)$可以找到多项式的零点，可用来判断系统是否是最小相位。

即使系统没有内部稳定性，仍有可能是输入输出稳定系统。此情形时的不稳定极点和零点相消，为一个可去奇点。

### 传递函数

传递函数可用来描述线性非时变系统的特性。一个连续时间的线性非时变系统，可以用以下的方式，将其状态空间表示式转换为传递函数：

首先，对下式进行拉氏转换，在初始条件为0（$\mathbf{x}(0) =\mathbf{0}$）时

$$\dot{\mathbf{x}}(t) = A \mathbf{x}(t) + B \mathbf{u}(t)$$

可得到

$$s\mathbf{X}(s) = A \mathbf{X}(s) + B \mathbf{U}(s)$$

再针对$\mathbf{X}(s)$化简，可得到

$$(s\mathbf{I} - A)\mathbf{X}(s) = B\mathbf{U}(s)$$

$$\mathbf{X}(s) = (s\mathbf{I} - A)^{-1}B\mathbf{U}(s)$$

可以用此式来替换以下输出方程式中的$\mathbf{X}(s)$

$$\mathbf{Y}(s) = C\mathbf{X}(s) + D\mathbf{U}(s)$$

结果如下

$$\mathbf{Y}(s) = C((s\mathbf{I} - A)^{-1}B\mathbf{U}(s)) + D\mathbf{U}(s)$$

传递函数$\mathbf{G}(s)$定义为系统输出相对于输入的比值

$$\mathbf{G}(s) = \mathbf{Y}(s) / \mathbf{U}(s)$$

因此可得到

$$\mathbf{G}(s) = C(s\mathbf{I} - A)^{-1}B + D$$

$\mathbf{G}(s)$必须是$q \times p$的矩阵。

若线性非时变系统有多个输入及输出时，其传递函数（也称为传递矩阵）表示每一组输入及输出的关系，传递矩阵的每一个元素都是一组特定输入及输出的传递函数，不过多重输入多重输出（MIMO）的系统多使用状态空间的方式进行分析，较少使用传递函数或传递矩阵。

将一个系统由状态空间表示式转换为传递函数时，系统内部的资讯无法完整的转换，可能系统表示为状态空间表示式中在特定位置时会不稳定，但是用传递函数表示时却是一个稳定的系统。

### 可控制性

一系统的状态可控制性表示对于系统的一组初始状态及一组终止状态，存在一组输入，使得此系统在有限时间内，可以由初始状态转移到终止状态。一个连续线性时不变系统以状态空间表示时，系统当且仅当在以下秩的等式成立时才有可控制性

$$\operatorname{rank}\begin{bmatrix}B& AB& A^{2}B& ...& A^{n-1}B\end{bmatrix} = n$$

（秩就是矩阵中线性独立横行的数目）

### 可观察性

可观察性是可以依一系统的输出得知其系统内部的初始状态。一系统的可观察性及可控制性有数学上的对偶关系，可控制性是指可以利用输入将系统由初始状态转换成任意的最终状态，而可观察性是指系统的输出轨迹预测其初始状态。

一个连续时间的线性非时变系统可观察性，当且仅当下式成立：

$$\operatorname{rank}\begin{bmatrix}C\\ CA\\ ...\\ CA^{n-1}\end{bmatrix} = n$$

### 传递函数

连续时间线性时不变的状态空间模型可以用以下方式推导其传递函数：

首先，对下式进行拉普拉斯变换

$$\dot{\mathbf{x}}(t) = A \mathbf{x}(t) + B \mathbf{u}(t)$$

可得

$$s\mathbf{X}(s)-\mathbf{x}(0) = A \mathbf{X}(s) + B \mathbf{U}(s).$$

接下来，化简$\mathbf{X}(s)$，可得

$$(s\mathbf{I} - A)\mathbf{X}(s) =\mathbf{x}(0)+ B\mathbf{U}(s),$$

因此

$$\mathbf{X}(s) =(s\mathbf{I} - A)^{-1}\mathbf{x}(0)+ (s\mathbf{I} - A)^{-1}B\mathbf{U}(s).$$

替换以下输出方程中的$\mathbf{X}(s)$

$\mathbf{Y}(s) = C\mathbf{X}(s) + D\mathbf{U}(s),$可得

$$\mathbf{Y}(s) = C((s\mathbf{I} - A)^{-1}\mathbf{x}(0)+ (s\mathbf{I} - A)^{-1}B\mathbf{U}(s)) + D\mathbf{U}(s).$$

传递函数 $\mathbf{G}(s)$定义为在初始条件为0（$\mathbf{x}(0) =\mathbf{0}$）时，系统输出和输入的比值。不过因为向量和向量的比例不存在，因此考虑让传递函数可以满足下式

$$\mathbf{G}(s)\times\mathbf{U}(s) = \mathbf{Y}(s)$$

比较$\mathbf{Y}(s)$的方程，可得

$$\mathbf{G}(s) = C(s\mathbf{I} - A)^{-1}B + D.$$

可以看出$\mathbf{G}(s)$的维度需要是$q$乘$p$，共有$qp$ 个元素。

针对每一个输入，有$q$个传递函数，每个对应一个输出。因此在多重输入多重输出（MIMO）的系统，会比较倾向用状态空间表示法来表达。罗森布罗克系统矩阵提供了状态空间表示法和其传递函数之间的桥梁。

### 正则实现

任一个严格真分的传递函数，可以依以下的方式转换为状态空间的表示法（以下以一个4阶、单一输入及输出的系统为例）：

先将传递函数分子分母展开成以下的形式：

$\textbf{G}(s) = \frac{n_{1}s^{3} + n_{2}s^{2} + n_{3}s + n_{4}}{s^{4} + d_{1}s^{3} + d_{2}s^{2} + d_{3}s + d_{4}}$.

其分子分母的系数可以放进以下的状态空间表示式中：

$$\dot{\textbf{x}}(t) = \begin{bmatrix} <pre> -d_{1}& -d_{2}& -d_{3}& -d_{4}\\ 1& 0& 0& 0\\ 0& 1& 0& 0\\ 0& 0& 1& 0 \end{bmatrix}\textbf{x}(t) + \begin{bmatrix} 1\\ 0\\ 0\\ 0\\ \end{bmatrix}\textbf{u}(t)$$

$\textbf{y}(t) = \begin{bmatrix} n_{1}& n_{2}& n_{3}& n_{4} \end{bmatrix}\textbf{x}(t)$.

这种状态空间的实现方式称为“可控制正则型”（controllable canonical form），方便判断系统的可控制性（控制输入经过一连串的积分器后，即可影响每一个状态），因此。

传递函数也可以转换为以下的状态空间表示式：

$$\dot{\textbf{x}}(t) = \begin{bmatrix} <pre> -d_{1}& 1& 0& 0\\ -d_{2}& 0& 1& 0\\ -d_{3}& 0& 0& 1\\ -d_{4}& 0& 0& 0 \end{bmatrix}\textbf{x}(t) + \begin{bmatrix} n_{1}\\ n_{2}\\ n_{3}\\ n_{4} \end{bmatrix}\textbf{u}(t)$$

$\textbf{y}(t) = \begin{bmatrix} 1& 0& 0& 0 \end{bmatrix}\textbf{x}(t)$.

这种状态空间的实现方式称为“可观察正则型”（observable canonical form），方便判断系统的可观察性（输出是经过状态变数一连串积分后的输出，因此可经由状态变数影响系统的输出）。

### 真分传递函数

若传递函数只是真分传递函数，不满足严格真分的条件，可以将传递函数分为一严格真分数及常数的和，即可转换为状态空间的表示方式

$$\textbf{G}(s) = \textbf{G}_{SP}(s) + \textbf{G}(\infty)$$

利用上一段的作法可以将严格真分传递函数转换为正则型的状态空间表示式。而常数部分可以转换为$\textbf{y}(t) = \textbf{G}(\infty)\textbf{u}(t)$。因此状态空间表示式的矩阵A、B及C可利用传递函数的严格真分部分求得，而矩阵D可利用常数部分求得。

例如以下的真分传递函数

$$\textbf{G}(s) = \frac{s^{2} + 3s + 3}{s^{2} + 2s + 1} <pre> = \frac{s + 2}{s^{2} + 2s + 1} + 1$$

其可控制正则型的实现如下

$$\dot{\textbf{x}}(t) = \begin{bmatrix} <pre> -2& -1\\ 1& 0\\ \end{bmatrix}\textbf{x}(t) + \begin{bmatrix} 1\\ 0\end{bmatrix}\textbf{u}(t)$$

$$\textbf{y}(t) = \begin{bmatrix} 1& 2\end{bmatrix}\textbf{x}(t) + \begin{bmatrix} 1\end{bmatrix}\textbf{u}(t)$$

其输出直接受到输入的影响，原因就是因为传递函数的常数部分。

### 反馈

<image>

要为系统增加反馈，可以将输出乘以一矩阵K，当作系统的输入：$\mathbf{u}(t) = K \mathbf{y}(t)$.

因此系统

$$\dot{\mathbf{x}}(t) = A \mathbf{x}(t) + B \mathbf{u}(t)$$

$$\mathbf{y}(t) = C \mathbf{x}(t) + D \mathbf{u}(t)$$

可改写为以下的形式

$$\dot{\mathbf{x}}(t) = A \mathbf{x}(t) + B K \mathbf{y}(t)$$

$$\mathbf{y}(t) = C \mathbf{x}(t) + D K \mathbf{y}(t)$$

求解$\mathbf{y}(t)$，代入状态方程式中可得

$$\dot{\mathbf{x}}(t) = \left(A + B K \left(I - D K\right)^{-1} C \right) \mathbf{x}(t)$$

$$\mathbf{y}(t) = \left(I - D K\right)^{-1} C \mathbf{x}(t)$$

此作法的好处是整个系统的特性不止是由矩阵A的特征值决定，也可以由K的适当设定及$\left(A + B K \left(I - D K\right)^{-1} C \right)$的特征值分解来调整。不过此作法的前提是开回路系统本身是可控制的，或者矩阵A的不稳定特征值可以由适当的K调整为稳定。

有一种常见的简化法是令矩阵D为零矩阵，矩阵C为单位矩阵，因此方程式可以简化为以下的形式：

$$\dot{\mathbf{x}}(t) = \left(A + B K \right) \mathbf{x}(t)$$

$$\mathbf{y}(t) = \mathbf{x}(t)$$

需进行特征值分解的矩阵缩小为$A + B K$。

### 有回授及目标值输入

<image>

回授信号也可以再加上目标值输入$r(t)$，此时的回授值信号为$\mathbf{u}(t) = -K \mathbf{y}(t) + \mathbf{r}(t)$.

$$\dot{\mathbf{x}}(t) = A \mathbf{x}(t) + B \mathbf{u}(t)$$

$$\mathbf{y}(t) = C \mathbf{x}(t) + D \mathbf{u}(t)$$

变成以下的形式

$$\dot{\mathbf{x}}(t) = A \mathbf{x}(t) - B K \mathbf{y}(t) + B \mathbf{r}(t)$$

$$\mathbf{y}(t) = C \mathbf{x}(t) - D K \mathbf{y}(t) + D \mathbf{r}(t)$$

求解$\mathbf{y}(t)$，代入状态方程式中可得

$$\dot{\mathbf{x}}(t) = \left(A - B K \left(I + D K\right)^{-1} C \right) \mathbf{x}(t) + B \left(I - K \left(I + D K\right)^{-1}D \right) \mathbf{r}(t)$$

$$\mathbf{y}(t) = \left(I + D K\right)^{-1} C \mathbf{x}(t) + \left(I + D K\right)^{-1} D \mathbf{r}(t)$$

一个常见的简化是令矩阵D为零矩阵，方程式可简化为以下的形式

$$\dot{\mathbf{x}}(t) = \left(A - B K C \right) \mathbf{x}(t) + B \mathbf{r}(t)$$

$$\mathbf{y}(t) = C \mathbf{x}(t)$$

### 移动物体的范例

以下以物体的一维移动来作为范例。

考虑一物体在一平面上水平移动，物体和墙壁之间有弹簧相连接，依牛顿第二运动定律，其受力如下

$$m \ddot{y}(t) = u(t) - k_1\dot{y}(t) - k_2 y(t)$$

其中

- $y(t)$为位置，$\dot y(t)$及$\ddot{y}(t)$分别是速度及加速度
- $u(t)$为施力
- $k_1$为粘滞摩擦系数
- $k_2$为弹簧的弹性常数
- $m$为物体的质量

其状态方程式可以下式表示

$$\left[ \begin{matrix} \mathbf{\dot{x_1}}(t) \\ \mathbf{\dot{x_2}}(t) \end{matrix} \right] = \left[ \begin{matrix} 0 & 1 \\ -\frac{k_2}{m} & -\frac{k_1}{m} \end{matrix} \right] \left[ \begin{matrix} \mathbf{x_1}(t) \\ \mathbf{x_2}(t) \end{matrix} \right] + \left[ \begin{matrix} 0 \\ \frac{1}{m} \end{matrix} \right] \mathbf{u}(t)$$

$$\mathbf{y}(t) = \left[ \begin{matrix} 1 & 0 \end{matrix} \right] \left[ \begin{matrix} \mathbf{x_1}(t) \\ \mathbf{x_2}(t) \end{matrix} \right]$$

其中

- $x_1(t)$为物体的位置
- $x_2(t) = \dot{x_1}(t)$为物体的速度
- $\dot{x_2}(t) = \ddot{x_1}(t)$为物体的加速度
- 输出$\mathbf{y}(t)$为物体的位置

依可控制性测试，结果为

$$\left[ \begin{matrix} B & AB \end{matrix} \right] = \left[ \begin{matrix} \left[ \begin{matrix} 0 \\ \frac{1}{m} \end{matrix} \right] & \left[ \begin{matrix} 0 & 1 \\ -\frac{k_2}{m} & -\frac{k_1}{m} \end{matrix} \right] \left[ \begin{matrix} 0 \\ \frac{1}{m} \end{matrix} \right] \end{matrix} \right] = \left[ \begin{matrix} 0 & \frac{1}{m} \\ \frac{1}{m} & \frac{k_1}{m^2} \end{matrix} \right]$$

对所有非零的$k_1$，上述矩阵皆为full rank。

依可观察性测试，结果为

$$\left[ \begin{matrix} C \\ CA \end{matrix} \right] = \left[ \begin{matrix} \left[ \begin{matrix} 1 & 0 \end{matrix} \right] \\ \left[ \begin{matrix} 1 & 0 \end{matrix} \right] \left[ \begin{matrix} 0 & 1 \\ -\frac{k_2}{m} & -\frac{k_1}{m} \end{matrix} \right] \end{matrix} \right] = \left[ \begin{matrix} 1 & 0 \\ 0 & 1 \end{matrix} \right]$$

对所有非零的$k_1$，上述矩阵也皆为full rank。

因此，此系统具有可控制性及可观察性。

## 非线性系统

以下将状态空间模型以函数的形式来表示。

$$\mathbf{\dot{x}}(t) = \mathbf{f}(t, x(t), u(t))$$

$$\mathbf{y}(t) = \mathbf{h}(t, x(t), u(t))$$

第一个方程式为状态方程式，第二个方程式为输出方程式。

此表示法可以表示线性系统及非线性系统。若函数$f(\cdot,\cdot,\cdot)$是状态及输入的线性组合，则以上方程式可以改写为矩阵的形式。

若系统没有外力（没有输入项），则以上方程式中的$u(t)$可以省略。

### 单摆的范例

单摆即为一个非线性系统的例子。

$$ml\ddot\theta(t)= -mg\sin\theta(t) - kl\dot\theta(t)$$

其中

- $\theta(t)$为单摆偏离垂线的角度
- $m$为单摆的质量（单摆的线或杆的质量假设为零）
- $g$为重力加速度
- $k$为摩擦系数
- $l$为单摆的半径（以质量$m$的重心位置为准）

其状态方程式为

$$\dot{x_1}(t) = x_2(t)$$

$$\dot{x_2}(t) = - \frac{g}{l}\sin{x_1}(t) - \frac{k}{m}{x_2}(t)$$

其中

- $x_1(t) = \theta(t)$为单摆的角度
- $x_2(t) = \dot{x_1}(t)$为单摆的角速度
- $\dot{x_2} = \ddot{x_1}$为单摆的角加速度

其状态方程式可写成以下的形式

$$\dot{x}(t) = \left( \begin{matrix} \dot{x_1}(t) \\ \dot{x_2}(t) \end{matrix} \right) = \mathbf{f}(t, x(t)) = \left( \begin{matrix} x_2(t) \\ - \frac{g}{l}\sin{x_1}(t) - \frac{k}{m}{x_2}(t) \end{matrix} \right).$$

一系统的机械平衡点或驻点为$\dot{x} = 0$的位置，因此单摆系统的平衡点如下

$$\left( \begin{matrix} x_1 \\ x_2 \end{matrix} \right) = \left( \begin{matrix} n\pi \\ 0 \end{matrix} \right)$$

其中n为整数。

## 相关条目

- 离散化
- 相空间：物理学和数学中有关相空间（例如连续的状态空间）的资讯。
- 状态空间 (计算机科学)：计算机科学中有关状态空间的资讯。
- 几率空间：几率中关于状态空间的资讯。
- 卡尔曼滤波