2026/9/13 1:52:48

状态空间中的能控性:从判据到工程应用详解

状态空间中的能控性:从判据到工程应用详解 刚开始学现代控制理论的人十有八九会被“能控性”这个概念卡一下。明明给出了状态方程仿真跑起来也没发现问题为什么要单独分析系统能不能控我当初学的时候也很懵直到后来做工程实践遇到过物理上明明“能推动”但数学上不可控的系统才真正明白这一章的价值。这篇文章是【现代控制理论笔记】第二章的内容核心话题就是能控性分析。我会把定义、四个常用判据、能控标准型、坐标变换、能控性分解和算例串在一起讲重点解释每个判断依据背后的为什么并结合我自己在实际算题、写代码、做仿真时踩过的坑。适合正在学现代控制理论、准备考研或期末复习以及刚转做控制算法的工程师朋友希望能帮你们把这一章学得更通透。1. 能控性到底回答什么问题定义、直觉和最容易混淆的概念1.1 先从一个“能不能推动”的直觉说起想象你面前有一台遥控车车身有好几个可动的关节例如轮胎转角、车灯、喇叭、尾翼。如果遥控器上只有一个油门推杆你会不会觉得有些功能“不受你控制”能控性分析本质上就是在回答类似问题对给定的系统方程输入信号到底能影响哪些状态不能影响哪些状态。对于线性时不变系统状态方程通常写成[ \dot{\mathbf{x}}(t) A \mathbf{x}(t) B u(t) ]其中 ( \mathbf{x}(t) ) 是状态向量( u(t) ) 是输入向量( A ) 是系统矩阵( B ) 是输入矩阵。能控性的正式定义可以这样理解如果对于任意给定的初态 ( x_0 ) 和任意希望到达的终态 ( x_1 )都存在一个有限时间区间 ( [0, T] ) 和某个分段连续的输入 ( u(t) )使得系统的状态从 ( x(0)x_0 ) 出发在 ( tT ) 时满足 ( x(T)x_1 )那么这个系统就是完全能控的。这个定义里藏了几个容易忽略的关键点。第一它说的是任意初态到任意终态不是某两个特殊状态之间可以转移就算能控。第二它要求在有限时间内完成不能回答说“时间足够长总可以”。第三输入必须是可实现的信号不能靠一堆理想冲激来凑数。你把这三个条件拆开看就能明白能控性是一种非常强的系统能力描述。1.2 状态能控、输出能控与能达性的区别能控性至少有三个相近概念初学者特别容易混状态能控、输出能控、能达性。简单说状态能控关心的是“状态变量能不能被输入影响”输出能控关心的是“输出量能不能被输入带到指定值”而能达性关心的是“从某个初态能否到达另一个目标状态”。要注意的是状态能控和输出能控并不等价。有些系统状态能控但因为输出矩阵把不可控的状态滤掉了最终输出仍然能被控制到任意值反过来状态不完全能控时输出也可能能控。判断输出能控性时一般构造输出能控矩阵[ Q_{oc} [CB \quad CAB \quad CA^2B \quad \cdots \quad CA^{n-1}B] ]如果 ( \mathrm{rank}(Q_{oc}) p )其中 ( p ) 是输出维数就说系统输出完全能控。这个矩阵的形式和状态能控矩阵很像但它衡量的是从输入到输出的传递能力而不是输入到所有状态的能力。在学习连续系统时能控与能达通常是等价的因为在连续线性定常系统中状态转移矩阵 ( e^{At} ) 始终可逆从一个状态能搬到另一个状态反过来也能搬回去。但在离散系统中如果状态转移矩阵 ( F ) 奇异能控和能达就可能产生差异所以看到离散系统时不要直接照搬连续系统的结论。1.3 离散系统的能控性定义离散时间系统写成[ x[k1] Fx[k] Gu[k] ]它的能控性定义和连续版本类似对任意初态 ( x_0 )都存在有限步数 ( N ) 和输入序列 ( u[0], u[1], \dots, u[N-1] )使得系统在第 ( N ) 步到达目标状态。但由于离散系统的矩阵 ( F ) 不一定可逆“从初态驱动到零”和“从零驱动到目标态”在某些情况下并不等价。我在实际仿真里遇到过这样的问题连续系统的采样周期选得不合适离散化之后某些模态反而不可控。这个现象在后面的工程坑章节会重点展开。现在你只需要记住能控性的核心思想是“输入是否对全部状态都有足够的影响路径”而不是简单套公式。2. 四个常用判据秩判据、PBH、Gramian 与约当标准型怎么选2.1 能控性矩阵与 Kalman 秩判据最经典、也最好用的判断方法就是能控性矩阵秩判据也叫 Kalman 秩判据。对 ( n ) 阶系统构造矩阵[ Q_c [B \quad AB \quad A^2B \quad \cdots \quad A^{n-1}B] ]如果 ( \mathrm{rank}(Q_c) n )那么系统完全能控。这个判据的底层逻辑来自 Cayley-Hamilton 定理。根据这个定理( A^n ) 以及更高次幂都能表示成 ( I, A, A^2, \dots, A^{n-1} ) 的线性组合。这意味着 ( A ) 的高次幂乘以 ( B ) 以后不会带来任何新的独立方向。所以判断输入矩阵 ( B ) 能否“生成”整个状态空间时只需要看到 ( A^{n-1}B ) 就够了不用继续往上加列。考试手算时最常见方法是把 ( Q_c ) 的秩算出来和 ( n ) 比较。如果矩阵维数不高直接算行列式最快。对于多输入系统( Q_c ) 是一个 ( n \times np ) 的长矩阵行列式不好算就要用高斯消元或 MATLAB 的 rank 函数来求秩。2.2 PBH 秩判据的几何意义PBH 判据是 Popov-Belevitch-Hautus 判据的缩写它从特征值和特征向量的角度提供了一个等价判断。判据内容是对系统矩阵 ( A ) 的每个特征值 ( \lambda_i )都满足[ \mathrm{rank}([A - \lambda_i I \quad B]) n ]或者写成等价形式不存在非零左特征向量 ( w ) 满足 ( w^T A \lambda_i w^T ) 且 ( w^T B 0 )。从控制角度理解PBH 判据其实是在说如果某个特征向量方向完全落在输入矩阵的零空间里那么在这个特征向量描述的模态方向上输入一点力气都使不上这个模态自然就不可控。约当标准型判据之所以能用本质上就是 PBH 判据在特征基下的具体化。我在理论证明和后面第五章的工程分析中常常用到 PBH 判据。尤其是遇到约当块时如果直接算能控性矩阵维度高了会很乱但用 PBH 把每个特征值拿过去检查思路会非常清晰。2.3 Gramian 判据不仅能判断还给出能量信息能控性 Gramian 矩阵的定义是[ W_c(t) \int_0^t e^{A\tau} BB^T e^{A^T\tau} d\tau ]系统在区间 ( [0, t] ) 上完全能控当且仅当 ( W_c(t) ) 非奇异。Gramian 判据的好处不只是“用积分替代秩”更在于它把控制能量信息也算出来了。给定初态 ( x_0 ) 和终态 ( x_1 )最小能量控制输入可以写成[ u(\tau) -B^T e^{A^T(t-\tau)} W_c^{-1}(t)(e^{At}x_0 - x_1) ]这是很多最优控制教材里会再次遇到的结果。工程中Gramian 的奇异值还能反映系统各个方向“好不好控”。如果某个方向对应的奇异值特别小说明要在这个方向上控制状态需要极大的输入能量。虽然理论上能控但工程上基本等于不可控。这一点在做大型系统、模型降阶、弱可控性分析时特别有用。2.4 约当标准型判据一眼看出不可控模态约当标准型判据的判断规则可以归纳为三条每个约当块在变换后的输入矩阵 ( \bar{B} ) 中对应的最后一行必须线性独立。对同一个特征值的多个约当块还要保证“最底层行”相互独立。如果某个约当块对应的最后一行全为零那这个模态一定不可控。这条判据最大的价值不是替代其他判据而是帮你定位“哪一个状态不可控”。比如说有一个对角化的系统[ A \begin{bmatrix} -1 0 \ 0 -2 \end{bmatrix}, \quad B \begin{bmatrix} 1 \ 0 \end{bmatrix} ]这个系统的能控性矩阵是[ Q_c \begin{bmatrix} 1 -1 \ 0 0 \end{bmatrix} ]秩明显是 1小于系统阶数 2。约当标准型判据一眼就能看出来第一个状态 ( x_1 ) 受输入影响第二个状态 ( x_2 ) 完全没被输入带动所以 ( x_2 ) 对应的模态不可控。2.5 四个判据的对比与个人使用顺序判据判断内容优点典型使用场景Kalman 秩判据(\mathrm{rank}([B, AB, \dots, A^{n-1}B])n)直观、实现简单手算低阶系统、MATLAB 快速验证PBH 秩判据每个特征值下 ([A-\lambda_i I, B]) 行满秩理论上强大能揭示模态原因推导性质、分析约当块Gramian 判据(W_c(t)) 非奇异附带能量信息可构造最优输入数值分析、最优控制、模型降阶约当标准型判据约当块对应输入行是否独立直观展示不可控模态研究系统内部结构、定位问题方向我个人的习惯是先用 Kalman 秩判据做快速判断如果发现不可控或者条件数很差再转约当标准型看具体是哪个模态出了毛病。Gramian 则主要在需要分析控制能量时使用例如研究弱能控方向、做平衡截断模型降阶时。3. 能控标准型、坐标变换与能控性分解状态空间设计的加速器3.1 能控标准型怎么构造如果一个单输入系统完全能控那一定存在一个可逆的状态变换把它变成所谓的能控标准型。能控标准型的形式通常是[ A_c \begin{bmatrix} 0 1 0 \cdots 0 \ 0 0 1 \cdots 0 \ \vdots \vdots \vdots \ddots \vdots \ -a_0 -a_1 -a_2 \cdots -a_{n-1} \end{bmatrix}, \quad b_c \begin{bmatrix} 0 \ 0 \ \vdots \ 1 \end{bmatrix} ]其中 ( a_0, a_1, \dots, a_{n-1} ) 是系统特征多项式的系数使特征多项式等于[ s^n a_{n-1}s^{n-1} \cdots a_1 s a_0 ]这个形式的妙处在于它把系统控制通道变得非常直接最后一个状态 ( x_n ) 是唯一直接受 ( u ) 驱动的变量前面的状态通过状态间的耦合依次串联起来。设计状态反馈时只需要根据期望闭环极点算出期望多项式然后反解反馈增益 ( K ) 对应的系数整个设计流程就变得机械化不再需要反复试参数。3.2 变换矩阵的构造步骤对单输入系统若原系统为 ( (A, b) )能控性矩阵为[ Q_c [b \quad Ab \quad \cdots \quad A^{n-1}b] ]假设 ( Q_c ) 可逆记 ( Q_c^{-1} ) 的最后一行是 ( e )那么变换矩阵可以这样构造[ P^{-1} \begin{bmatrix} e \ eA \ eA^2 \ \vdots \ eA^{n-1} \end{bmatrix} ]新状态 ( z P^{-1}x )变换后的系统矩阵满足[ A_c P^{-1} A P, \quad b_c P^{-1} b ]实际计算时我建议按下面五步走列出能控性矩阵确认它满秩。求出 ( Q_c^{-1} )取出最后一行作为 ( e )。依次乘 ( A )得到 ( eA, eA^2, \dots, eA^{n-1} )。把结果按行叠起来得到 ( P^{-1} )。用 ( P (P^{-1})^{-1} ) 验证 ( A_c ) 和 ( b_c ) 是否符合标准型。这个地方也是我当年最爱出错的位置。很多教材对能控标准型的排列方向定义不一样有的把 1 放在超对角线上像我上面写的那样有的则放在负次对角线上最后 ( b_c ) 可能变成 ( [0, 0, \dots, 1]^T ) 以外的形式。考试和写代码之前一定先确认你手头教材的约定不然矩阵全部反了排查半天都不知道错在哪。3.3 能控性分解把不可控部分单独拆出来并不是所有系统都能变到能控标准型。如果系统不完全能控可以用一个可逆变换把状态空间分成能控子空间和不能控子空间两部分。变换后系统可以写成[ \begin{bmatrix} \dot{x}c \ \dot{x}{\bar{c}} \end{bmatrix}\begin{bmatrix} A_c A_{12} \ 0 A_{\bar{c}} \end{bmatrix} \begin{bmatrix} x_c \ x_{\bar{c}} \end{bmatrix} \begin{bmatrix} B_c \ 0 \end{bmatrix} u ]也就是说经过合适坐标变换后能控部分 ( x_c ) 直接受输入影响而不可控部分 ( x_{\bar{c}} ) 的状态方程中输入矩阵对应位置是零。( x_{\bar{c}} ) 可以受到 ( x_c ) 的部分耦联影响但它本身不被 ( u ) 直接驱动。能控性分解的价值在于它让我们知道整个系统并不是“完全不可救药”的。通常可以把能控部分拿来设计反馈不能控的部分就看它本身稳不稳定。如果不可控模态是稳定的系统整体还能用如果不可控模态本身不稳定那反馈设计得再好也救不了那部分状态。3.4 最小实现与传递函数的关系从传递函数角度理解能控性分解也很重要。传递函数只描述系统“能控且能观”的那部分动态如果某个模态不可控或者不可观它在传递函数中就不会出现。换句话说状态空间描述可能有冗余而传递函数通常对应的是系统的最小实现。我第一次理解这句话时感觉很多事都串起来了。为什么一个高阶状态空间模型和低阶传递函数模型可能描述同一个输入输出行为就是因为有些状态模态不可控或不可观没有出现在传递函数里。做系统辨识或模型降阶时可以先做能控性分解和能观性分解把冗余维度删掉再用更小的模型去做控制器设计。4. 一个三阶系统的手算算例从能控矩阵到标准型变换4.1 系统状态方程为了把前面这些方法落到纸面我挑一个三阶系统做完整推导。设系统矩阵和输入矩阵为[ A \begin{bmatrix} 0 1 0 \ 0 0 1 \ -6 -11 -6 \end{bmatrix}, \quad B \begin{bmatrix} 1 \ 1 \ 0 \end{bmatrix} ]这个系统的特征多项式是[ \det(sI - A) s^3 6s^2 11s 6 (s1)(s2)(s3) ]所以特征值是 ( -1, -2, -3 )是三个互不相同的实特征值。需要判断系统 ( (A, B) ) 是否完全能控。4.2 用能控性矩阵求秩先算前几项[ B \begin{bmatrix} 1 \ 1 \ 0 \end{bmatrix} ][ AB A \begin{bmatrix} 1 \ 1 \ 0 \end{bmatrix} \begin{bmatrix} 1 \ 0 \ -17 \end{bmatrix} ][ A^2B A \begin{bmatrix} 1 \ 0 \ -17 \end{bmatrix} \begin{bmatrix} 0 \ -17 \ 96 \end{bmatrix} ]于是能控性矩阵为[ Q_c \begin{bmatrix} 1 1 0 \ 1 0 -17 \ 0 -17 96 \end{bmatrix} ]计算行列式[ \det(Q_c) 1 \times (0 \times 96 - (-17)\times(-17)) - 1 \times (1\times 96 - 0) -289 - 96 -385 ]行列式不等于 0所以秩为 3系统完全能控。这里也可以看到虽然矩阵元素并不全是“好看”的数字但只要行列式非零结论就是确定的。4.3 用 PBH 判据再验证一次已知特征值 ( \lambda_1-1 )检查[ A - (-1)I \begin{bmatrix} 1 1 0 \ 0 1 1 \ -6 -11 -5 \end{bmatrix} ]拼接输入矩阵后[ [A - \lambda_1 I \quad B] \begin{bmatrix} 1 1 0 1 \ 0 1 1 1 \ -6 -11 -5 0 \end{bmatrix} ]这个 ( 3 \times 4 ) 矩阵的行秩要求等于 3因为前面三列的行列式经高斯消元后不为 0所以满秩成立。( \lambda_2-2 )( \lambda_3-3 ) 的验证步骤类似。我建议初学阶段不要只算一个特征值就下结论四个判据本质上等价但只要系统维数高某一个特征值处很容易出问题所以都要检查一遍。4.4 变换到能控标准型既然系统能控就可以做坐标变换。先求 ( Q_c^{-1} )这一步手算量确实比较大。( Q_c ) 的行列式为 -385逆矩阵可以通过伴随矩阵求得[ Q_c^{-1} \frac{1}{-385} \begin{bmatrix} -289 -96 -17 \ -96 96 17 \ -17 17 -1 \end{bmatrix} ]取出最后一行为[ e \frac{1}{-385} \begin{bmatrix} -17 17 -1 \end{bmatrix} ]然后构造[ P^{-1} \begin{bmatrix} e \ eA \ eA^2 \end{bmatrix} ]新系统就能化成前面写到的能控标准型。这个例子完整展示了为什么书上要反复强调“先判断能控性再谈标准型”如果没有第 4.2 步的满秩确认后面的 ( P^{-1} ) 根本不存在强行套公式只会得到错误结果。5. 工程视角下的能控性数值陷阱、离散化与不可控模态识别5.1 秩判据在数值计算里并不总是可靠能控性矩阵的秩判据看起来很简单但在实际用 MATLAB 或 Python 算大系统时我会提醒大家格外小心。原因很简单rank 函数对浮点误差非常敏感。( AB, A^2B, \dots, A^{n-1}B ) 本身可能就是数量级差别很大的矩阵列很多大系统计算出来的能控性矩阵条件数非常大明明理论上是满秩的机器判定却可能得到秩亏缺的结论。有一个很典型的现象用rank(ctrb(A,B))判断能控系统是能控的一旦把某个参数从 1e-9 改成 1e-10秩突然就变了。这种情况不一定意味着系统真的变得不可控更可能是数值精度问题。我的建议是低阶系统手算或符号计算别完全依赖数值 rank。高阶系统可以先计算 Gramian 矩阵的特征值观察最小特征值的大小判断是否有方向接近不可控。做控制器设计前可以先用平衡实现或能控性分解把数值病态的部分分离出去。如果用 Python 的control库或scipy做判断最好显式指定容差并验证计算结果。5.2 “理论能控”和“工程可控”是两回事这个观点是我在做工程时反复体会到的。一个大型机械系统可能每个模态在数学上都是能控的但控制某个模态需要的输入能量大得离谱导致实际控制系统根本推不动它。比如柔性机械臂的高频模态、液体晃动模态理论上输入可以激励它们但要在很短时间内把状态搬过去需要的力早就超过执行器上限了。在这种场景下Gramian 的特征值分布比单纯的秩更有参考价值。我通常会看 ( W_c ) 的奇异值如果某几个奇异值特别小就说明对应方向能控性很弱做控制器设计时要么牺牲这个方向的控制精度要么增加执行器数量要么重新设计结构让这个方向更容易被激励。5.3 连续系统能控离散化之后未必能控还有一个容易被忽视的工程问题连续系统能控采样后得到的离散系统不一定能控。原因和采样周期 ( T ) 以及系统特征值有关。对于特征值为共轭复数的振荡模态如果采样周期刚好满足某些条件离散化后模态之间的区分度会下降甚至导致离散系统的能控性矩阵亏秩。举个简单例子连续系统有两个模态频率分别是 ( \omega_1 ) 和 ( \omega_2 )如果采样周期 ( T ) 使得 ( e^{j\omega_1 T} e^{j\omega_2 T} )那么这两个模态在离散数据中变得完全一样离散系统就会出现不可控或不可观的现象。这在数字控制系统中尤其需要小心因为很多无人机、电机控制、逆变器的控制周期都是固定的建模后最好用离散模型重新做一次能控性判断而不是只拿连续模型分析完就直接设计数字控制器。5.4 不可控模态的工程来源在实际系统中不可控模态往往来自以下几类情况执行器安装位置不合理某些结构模态的振型正好在执行器作用点处为零。多执行器之间存在对称性导致差模模态无法被激励。系统模型里包含了不可观测或不可控的“内部动态”比如没有外部输入的恒定扰动状态。使用简化模型时把一些高频动态直接忽略但这些动态仍然存在于真实系统中。做故障诊断或健康管理时了解哪些模态不可控也很重要。如果某个故障特征对应的模态本来就不可控那么即使故障发生了从控制输入的角度也看不出明显变化这会直接影响故障检测方案的设计。6. 能控性与能观性的对偶关系学完这章记得回头串一下6.1 对偶原理的基本内容现代控制理论中能控性和能观性是一对天然的“双胞胎”。对偶原理说的是系统 ( (A, B, C) ) 的能控性等价于对偶系统 ( (A^T, C^T, B^T) ) 的能观性反过来也成立。写成形式化语言就是原系统能控 ( \Leftrightarrow ) 对偶系统能观原系统能观 ( \Leftrightarrow ) 对偶系统能控这个结论最大的好处是能控性的四个判据全部可以平移成能观性的判据。比如能观性矩阵[ Q_o \begin{bmatrix} C \ CA \ CA^2 \ \vdots \ CA^{n-1} \end{bmatrix} ]它和能控性矩阵在转置关系下是一一对应的。学了能控性分析再学能观性时很多公式都不需要重新背只要记住“把 ( A ) 转置、把 ( B ) 换成 ( C^T )”就行。6.2 对偶关系在设计与验证中的价值在实际设计中对偶关系经常被用来简化问题。比如设计状态观测器时观测器增益 ( L ) 的设计方法和状态反馈增益 ( K ) 的设计方法完全对应因为观测器问题可以转化为对偶系统的状态反馈问题。我在做估计算法时经常先写状态反馈设计函数再用对偶关系求观测器增益代码复用起来非常方便。从记忆角度我也建议用一句话理解这两个性质能控性看输入矩阵 ( B ) 能不能影响所有状态能观性看输出矩阵 ( C ) 能不能反映所有状态。一个管“输入到状态”一个管“状态到输出”中间通过 ( A ) 连接。理解了这个关系很多看似复杂的判据都能在头脑里形成一张清晰的图。6.3 学习能控性时的几个提醒最后说几个学习层面的体会也是我当年走过的弯路。第一不要把能控性只当“算一道题”的工具。它背后是状态空间方法和传递函数方法的分水岭。是否理解能控性决定了你能不能从“只会做数学题”过渡到“真正理解系统结构”。第二算题时一定要养成验证习惯。很多同学求完能控矩阵只算秩就结束。我建议再加上约当标准型分解看一下不可控模态到底在哪里即使系统能控也能加深理解。第三能控性与能观性要合并复习。它们公式结构高度相似分开学容易忘放在一起学会记得更牢。第四遇到模型维数很高的系统优先用 Gramian 和数值稳定性分析而不是只依赖秩判据。工程上“理论上能控”和“实际能用”之间有很大距离越早建立这种意识后面做真实系统就越少踩坑。7. 给初学者的实操建议如何把能控性分析真正用起来7.1 手算时可以选择的最小验证路径如果你现在正被期末或考研复习搞得头大我建议你至少把下面这条路径走通一遍写清状态空间矩阵 ( A, B, C )。判断系统阶数 ( n )。手算 ( Q_c [B, AB, \dots, A^{n-1}B] )。判断秩是否等于 ( n )。如果不等于再求特征值与约当标准型定位不可控模态。这个流程是能控性分析的最小闭环。不要一上来就跳到 MATLAB 里调函数因为手算过程能帮你建立矩阵维度和结构的感觉。等手算熟练以后再用工具提升效率。7.2 用 MATLAB 或 Python 时的检查清单我在公司和实验室都用过 MATLAB 和 Python这里给一份简单检查清单确认系统矩阵维度和输入矩阵维度匹配( B ) 的行数必须等于 ( A ) 的阶数。使用ctrb前先确认系统是连续还是离散两者物理意义不同。查看rank函数返回结果时不要只依赖默认容差可以试试设定不同容差看结果是否稳定。使用 Gramian 求解前先用lyap或积分方法计算观察最小特征值量级。我遇到过的低级错误之一就是把 ( B ) 矩阵的列当成行传进去结果能控矩阵维度直接不对。第一遍检查矩阵形状第二遍检查结果合理性能省下大量调试时间。7.3 把能控性和控制器设计串起来能控性不只是理论结论它直接决定状态反馈设计是否可行。状态反馈配置极点的前提是系统能控如果系统不可控那么无论选择什么增益 ( K )不可控模态的极点都不会改变。反过来如果状态反馈设计后发现某些极点怎么都配不到位第一反应就应该是“这个系统是不是不完全能控”。我在实际项目中遇到过类似情况一个热控制系统有内外两个温度状态执行器只能加热外壁内壁温度通过热传导缓慢变化。外壁状态能控内壁状态的响应主要由热容决定虽然有输入影响但在某个时间尺度上非常微弱。后来做了能控性分解才发现内壁模态虽然理论能控但能控度很低。于是重新设计了加热时序和传感器方案才算把系统真正控制住。这个例子让我彻底明白学能控性分析不能只满足于“能控或不可控”的二元结论还要学会看“能控的程度”。能控性分析是状态空间方法里最基础也最有信息量的一步把它吃透后面学状态反馈、状态观测器、最优控制都会顺畅很多。