3. 状态空间表达式的标准形式

好,咱们今天聊聊状态空间表达式的标准形式。说白了,就是连续时间系统的状态方程和输出方程到底长什么样。我刚开始学的时候,觉得这东西就是一堆矩阵在跳舞,后来做项目多了才发现——矩阵的维度一旦搞错,整个系统就崩了。

3.1 连续时间系统的状态方程

先看状态方程。对于一个连续时间系统,状态方程的标准形式是:

ẋ(t) = A x(t) + B u(t)

这里每个符号都有明确的物理意义:

  • x(t):状态向量,维度是 n×1。n 就是系统的阶数,也是状态变量的个数。
  • ẋ(t):状态向量的导数,维度也是 n×1。说白了就是状态的变化率。
  • u(t):输入向量,维度是 m×1。m 是输入信号的个数。
  • A:系统矩阵,维度是 n×n。它描述了状态之间的耦合关系。
  • B:输入矩阵,维度是 n×m。它描述了输入如何影响状态的变化。

嗯,这里要注意:A 矩阵一定是方阵。为什么?因为状态变量的个数是 n,每个状态的变化率都跟所有状态有关,所以必须是 n×n。我在项目中遇到过有人把 A 矩阵的维度搞错了,结果仿真出来的系统完全不对,查了半天才发现是矩阵乘法维度不匹配。

核心要点:状态方程描述的是「状态如何随时间变化」。它是一阶微分方程组,矩阵形式让表达更紧凑。

3.2 输出方程

输出方程的标准形式是:

y(t) = C x(t) + D u(t)

各符号的含义:

  • y(t):输出向量,维度是 p×1。p 是输出信号的个数。
  • C:输出矩阵,维度是 p×n。它把状态映射到输出。
  • D:直接传递矩阵,维度是 p×m。它描述了输入直接到输出的通路。

你想想看,为什么需要输出方程?因为状态变量不一定都能直接测量。比如一个电机系统,状态可能是电流和转速,但你能测到的可能只有转速。输出方程就是干这个的——从状态中提取出你关心的量。

个人经验:我习惯先确定输出变量的个数 p,再反推 C 矩阵的维度。这样不容易出错。曾经有个项目,输出是 3 个传感器信号,状态是 5 个,C 矩阵就是 3×5。这个逻辑很直接。

3.3 矩阵维度分析

维度分析是状态空间建模的基石。我把它整理成一张表,你对照着看:

矩阵/向量 符号 维度 说明
状态向量 x(t) n×1 n 个状态变量
状态导数 ẋ(t) n×1 与状态向量维度一致
输入向量 u(t) m×1 m 个输入信号
输出向量 y(t) p×1 p 个输出信号
系统矩阵 A n×n 方阵,描述状态耦合
输入矩阵 B n×m 输入对状态的影响
输出矩阵 C p×n 状态到输出的映射
直接传递矩阵 D p×m 输入到输出的直通

维度匹配的规则很简单:矩阵乘法必须满足「左列数等于右行数」。比如 A 是 n×n,x 是 n×1,A·x 就是 n×1,跟 ẋ 的维度一致。B 是 n×m,u 是 m×1,B·u 也是 n×1。加起来没问题。

避坑指南:我曾经在写代码时把 B 矩阵的维度写成了 m×n,结果矩阵乘法直接报错。检查了半小时才发现是维度顺序搞反了。记住:B 是 n×m,不是 m×n。这个顺序跟你的直觉可能相反,但数学上就是这么定义的。

3.4 知识体系结构图

下面这张图把状态空间表达式的核心逻辑串起来了。我建议你多看几遍,把矩阵维度的对应关系刻在脑子里。

状态空间表达式标准形式 状态方程 ẋ(t) = A x(t) + B u(t) n×1 = n×n · n×1 + n×m · m×1 描述状态随时间的变化 输出方程 y(t) = C x(t) + D u(t) p×1 = p×n · n×1 + p×m · m×1 从状态中提取可测输出 矩阵维度详解 A: n×n 系统矩阵(方阵) B: n×m 输入矩阵 C: p×n 输出矩阵 D: p×m 直接传递矩阵 n: 状态变量个数 | m: 输入个数 | p: 输出个数 维度匹配是建模正确性的第一道关卡

这张图把状态方程和输出方程并列展示,下面列出了四个矩阵的维度。你注意看,A 和 B 服务于状态方程,C 和 D 服务于输出方程。它们通过状态向量 x(t) 连接在一起。

3.5 一个简单的例子

拿一个 RLC 电路来说。状态变量选电容电压 v_c 和电感电流 i_L,所以 n=2。输入是电压源 v_s,m=1。输出是电容电压 v_c,p=1。

那么:

  • x(t) = [v_c; i_L],2×1
  • u(t) = [v_s],1×1
  • y(t) = [v_c],1×1
  • A 是 2×2,B 是 2×1,C 是 1×2,D 是 1×1(通常为 0)

你看,维度完全匹配。这就是标准形式的力量——你不需要记住每个方程的具体系数,只要维度对了,结构就对了。

总结一下:状态空间表达式的标准形式,核心就是四个矩阵和两个方程。矩阵维度决定了系统的规模,也决定了你能控制什么、观测什么。搞清楚了维度,建模就成功了一半。

专注资料整理