根据极点-零点分布进行状态空间模型降阶
- 根据极点-零点分布进行状态空间模型降阶
- 极点(Pole)的物理/数学含义
- 零点(Zero)的物理/数学含义
- 极点–零点相同位置:模式抵消
- ✨ 为什么 可以 模型降阶?
- MATLAB 绘制极点-零点分布
根据极点-零点分布进行状态空间模型降阶
- 极点 告诉你系统自己会怎么“颤动/衰减”——是所有模态的汇总;
- 零点 告诉你在哪些频率上“输入到输出的链路被一脚踹断”;
- 极点–零点相同 说明 “内部有这个模态,但外部完全看不到”,正是降阶的目标。
极点(Pole)的物理/数学含义
- 自然模态(Natural Modes)
- 极点 s i s_i si 就是矩阵 A A A 的特征值。每一个特征值对应一个“模态”——系统在无外力( u = 0 \!u=0 u=0)下,会 沿着对应的特征向量方向,以 e s i t e^{s_i t} esit 的形式 自然衰减或振荡。
- 如果 s i s_i si 是实数,模式是单指数衰减 e s i t e^{s_i t} esit;如果是复数对 α ± j β \alpha\pm j\beta α±jβ,是衰减振荡 e α t cos ( β t ) e^{\alpha t}\cos(\beta t) eαtcos(βt)。
- 时域含义
- ℜ ( s i ) < 0 \Re(s_i)<0 ℜ(si)<0 → 模式衰减,且 ∣ ℜ ( s i ) ∣ |\Re(s_i)| ∣ℜ(si)∣ 越大,衰得越快,系统稳定;
- ℜ ( s i ) > 0 \Re(s_i)>0 ℜ(si)>0 → 模式发散,系统不稳定;
- ℜ ( s i ) = 0 \Re(s_i)=0 ℜ(si)=0 且 ℑ ( s i ) ≠ 0 \Im(s_i)\neq0 ℑ(si)=0 → 永久振荡(边界稳定)。
- 频域含义
- 在频率响应里,离开输入的频率越靠近某个复数极点的虚部,系统对该频率的放大倍数越大(共振/峰值)。
零点(Zero)的物理/数学含义
- 传输零点(Transmission Zeros)
- 零点 z j z_j zj 是这样一类频率:即使在输入端 U ( s ) U(s) U(s) 做脉冲/正弦激励,输出 Y ( s ) Y(s) Y(s) 却在此 s = z j s=z_j s=zj 频率处被完全“抑制”(幅度为零)。
- 数学上,零点是使得传递函数矩阵 G ( s ) G(s) G(s) 在某个方向上降秩(或者 分子多项式为零)的 s s s 值。
- 输入–输出影响
- 有零点的模式往往是那种“输入作用到这个模态上,会被系统某种耦合机制立刻在输出端给抵消掉”,即 在传递路径上打了一个“死结”。
下面举个具体的例子帮助理解,参考 How Transfer Function Zeros Affect Transient Response
这些脉冲响应来自拥有 相同极点 的系统,那么它们究竟如何产生如此巨大的差异呢?
首先注意到,它们的 传递函数分子(零点位置)是不同的。我们把这两组传递函数 泛化为二阶系统:
左侧系统在 s = − z s=-z s=−z 处有一个零点;右侧系统没有任何零点。
问题就转化为:一个零点的存在,为什么会导致如此不同的响应?
首先看 无零点系统 H 1 ( s ) H_1(s) H1(s) 的脉冲响应,
其中极点为复共轭对(阻尼比 ζ < 1 \zeta<1 ζ<1),可分解并做部分分式展开,取逆拉普拉斯变换后得到时域脉冲响应并简化,
注意, y 1 ( t ) y_1(t) y1(t) 是指数和正弦波的乘积,指数项(极点的实部) 控制衰减或增长速度,正弦项(极点的虚部) 控制振荡频率。
现在已经确定了无零脉冲响应,现在来确定 在 − z -z −z 处有一个零点系统 H 2 ( s ) H_2(s) H2(s) 的脉冲响应,
同样对分母分解、做部分分式展开,并取逆拉普拉斯变换,化简后可得,
事情开始变得有趣了,
- 看一下第二项 z − a b \frac{z-a}{b} bz−a,随着 z z z 接近 a a a,频率响应 y 1 y_1 y1 会缩放,特别是当 z z z 接近于 p p p 的实部 a a a 时,极点位于 − p -p −p, ( z − a ) (z-a) (z−a) 项会消失,该 模态与 y 1 y_1 y1 完全抵消。
- 第二个观察结果是,零点不会影响衰减或放大的速率(即不会改变极点的实部)。
根据这些观察结果,现在要问的是,零点位置如何影响脉冲响应?
叠加各个零点位置的响应,
将系统极点固定在复平面上的某对位置,依次 把零点从右半平面向左半平面移动,可以同时绘制其脉冲响应,发现:
- 零点最初位于右半平面,这会导致瞬态响应最初下降;
- 当零点向左移动到左平面时,瞬态响应开始上升。
对两种情况的脉冲响应进行扩展,现在将单零点响应扩展为三个项,看看单零点响应中有什么?
原来的无零点项按 z z z 缩放。再看当零点从右半平面移动到左半平面时,这个项如何影响瞬态响应,
零点的位置 s s s 与第三项中包含的 z z z 值相反,
- 零点位于左半平面时 z > 0 z > 0 z>0,因此添加了第三项,这就是为什么 当 z z z 变大时,瞬态响应会增大(过冲);
因此在单零瞬态响应中,我们有按 z z z 缩放的原始无零响应,以及 由于零点而产生的额外瞬态响应,
这个额外的瞬态响应是什么?
对每个项进行拉普拉斯变换,我们发现瞬态是无零响应的导数,
注意传递函数 H 2 H_2 H2 现在表示为 H 1 H_1 H1 的函数,零点的影响是缩放无零响应,并将无零响应的导数添加到它,
现在考虑 H 2 H_2 H2 行为如何随着 z z z 的变化而变化,
- 随着 z z z 的幅度变大,缩放的无零响应占主导地位;
- 随着 z z z 幅度变小,无零响应的导数占主导地位。
在这两个极端之间, H 2 H_2 H2 是 H 1 H_1 H1 及其导数的组合。因此,在 y 2 y_2 y2 的时间域中,我们查看的是 y 1 y_1 y1 及其导数的线性组合。
从 H 2 H_2 H2 中分解出 H 1 H_1 H1,并注意 H 2 H_2 H2 是两个传递函数的乘积。
- H 1 H_1 H1 将输入 U U U 转换为其输出 Y 1 Y_1 Y1。
- 在 s = − z s=-z s=−z 处的零点将 H 1 H_1 H1 的输出通过传递函数 s + z s+z s+z 进行变换,乘积是 H 2 H_2 H2,即单零传递函数,或者说是 H 2 H_2 H2 将输入信号 U U U 转换为输出 Y 2 Y_2 Y2。
现在,我们便从 频域(零点的代数作用) 到 时域(叠加导数项),再回到频域看其物理意义。这使我们能够从多个角度理解零点对瞬态响应的影响。
在滤波器设计中,常用 严格本性(无零点)函数来抑制噪声;而一个零点的加入,实际上是对无零点响应的“反向滤波”,它通过缩放和叠加导数可能在信号上引入更大的瞬态振荡。
总结:
- 极点 决定系统的 衰减/振荡 速率(自然模态);
- 零点 不会改变衰减率,但会通过 叠加导数项 引入 超调/下冲;
- 当零点与极点相撞时,会 相互抵消,该模态在输入–输出通路上完全“隐形”;
- 正是零点位置的变化,让两个拥有 相同极点 的系统展现出 截然不同 的瞬态响应。
极点–零点相同位置:模式抵消
当看到:
极点: -1.8423, -1.7864, …
零点: -1.8423, -1.7864, …
一一对应,说明:
- 这些 极点–零点对 在传递函数里互相抵消,对输入–输出动态没有贡献。
- 换言之,这部分“内部模态”虽然存在于 A A A 矩阵,却对任何外部输入 u u u 并不会在输出 y y y 上留下痕迹——要么是 不可观测,要么是 不可控,或者两者兼有。
✨ 为什么 可以 模型降阶?
点 | 含义 |
---|---|
极点 = 模态存在 | 系统里有这个模式 |
零点 = 模态抵消 | 输入–输出通路上不允许这个模式传播 |
极点 = 零点 | 模态虽然存在,但完全被抑制,对输入输出行为 没有任何影响 |
极点 = 零点 为什么无用? | 不影响响应、不影响控制器、不改变系统性能,删掉更高效 |
- 移除“丝毫不影响”输入–输出性能的那些模式,让模型变得更小、更高效;
- 降阶后剩下的极点,才是真正决定系统对外(关心的那个输入–输出通道)动力学性能的 “有效模式”;
- 去除无用模式还有利于控制器设计(避免去补偿那些根本检测不到或控制不到的动态)。
举一个简单的例子,考虑一个 SISO 系统,传递函数为:
G ( s ) = ( s + 3 ) ( s + 1 ) ( s + 3 ) G(s) = \frac{(s + 3)}{(s + 1)(s + 3)} G(s)=(s+1)(s+3)(s+3)
可以对上面的式子做约分,化简后得到的系统:
G 简化 ( s ) = 1 s + 1 G_{\text{简化}}(s) = \frac{1}{s + 1} G简化(s)=s+11
- 原本极点有 { − 1 , − 3 } \{-1,-3\} {−1,−3},零点有 { − 3 } \{-3\} {−3}。
- 因为 − 3 -3 −3 频率上“零点–极点成对抵消”,最终等价于一个一阶系统 1 / ( s + 1 ) 1/(s+1) 1/(s+1)。
为什么这个抵消的模态没用了?
可以从时域和频域两个角度来理解。
-
时域角度理解
系统本来包含模态:- e − t e^{-t} e−t(极点 -1)→ 留下来了
- e − 3 t e^{-3t} e−3t(极点 -3)→ 被零点抵消了!
也就是说:系统本来有两个动态过程在响应输入时发生,一个快的、一个慢的。但是由于 s = − 3 s = -3 s=−3 同时是零点,所以该模态虽然 系统内部存在,但它 对输出的影响被输入路径“抵消”掉了!
想象成:这个模态存在于系统内部,但输入 u u u 不会激发它,输出 y y y 也看不到它。 -
频域角度理解
来看系统的频率响应:- 零点是让系统在某个频率 完全无响应。
- 极点是系统在某个频率 响应增强(或延迟)。
当 极点和零点相同 时,这两种影响完全抵消掉了。在 s = − 3 s = -3 s=−3 附近,刚想要“振起来”,系统立刻把那一部分“消掉”,结果就是没有那部分响应。
在控制系统里,我们只关心 输入 u u u 到 输出 y y y 的通路。如果某个内部状态的动态,输入激不起它,输出也看不到它,那它对控制器设计来说是 完全无用的:无需观测它、无需控制它、不影响性能、不影响稳定性。
所以在建模或简化模型时,完全可以删掉它。
MATLAB 绘制极点-零点分布
%% 1. 构造系统并算极零点
sys = ss(A,B,C,D); % 自定义的 A,B,C,D%% 2. 绘制极点-零点图
figure
hold on;
pzmap(sys)
grid on%% 3. 叠加阻尼比和自然频率线
sgrid
底图并不是一个“正方形”网格,而是典型的 s‑平面(damping–frequency)网格:
- 圆弧(constant natural frequency)
- 放射状直线(constant damping ratio)
- x 轴、y 轴刻度不等距(非等高宽)
MATLAB 自带了 Control Toolbox 里的 sgrid 函数,专门用来往 s‑平面上画这两种网格。
从极点(Poles)和传输零点(Transmission Zeros)结果来看,主要暴露出以下几个问题:
- 高阶系统中存在大量“重合”极点–零点
- 除了一个 幅值约为 − 9.4108 × 1 0 4 -9.4108\times10^4 −9.4108×104 的快模,几乎所有极点都落在 − 0.0 … ∼ − 1.0 -0.0…\sim-1.0 −0.0…∼−1.0 之间,而且传输零点列表里几乎“抄”了一份极点(同样的值、同样的幅度)——这说明在这些频率点上存在 成对的极点–零点。
- 这正是典型的 “极点–零点相互抵消”(pole–zero cancellation):系统在这些模态上既有极点又有相同位置的零点,结果在开环或闭环响应中,这部分动态都会被“抹去”,对外表现得像不存在这些模态。
- 模型“非最简”/不必要的高阶
- 当从某个更复杂的结构(比如带有很多中间变量、滤波器、观测器等)直接写出 A , B , C , D A,B,C,D A,B,C,D 后,很容易出现 非最小实现(non‑minimal realization):可控但不可观测或可观测但不可控的状态分量,被保留在模型里,却对输入—输出响应没有实质贡献。
- 大量频率接近零的模式
- 大量接近 0 (如 − 0.0000 -0.0000 −0.0000)的极点和零点,往往是数值精度或模型降阶/近似造成的“伪模式”——物理上并不存在这么多几乎为零的慢模态(“伪零点”)。
真正对系统输入—输出贡献 的是 被保留下来的“非抵消”极点/零点,对这些模式之外的部分,可以 用 minreal 或降阶方法清理掉。这样既让模型更简洁,也能避免后续控制器设计中出现不必要的麻烦。
-
最小化模型: 在 MATLAB 中对状态空间对象调用
sys_min = minreal(sys);
它会自动做可控性/可观测性分析,去掉所有“成对抵消”的极点–零点,得到最简的等价系统。
-
数值条件检查:
- 用
ctrb(A,B)
与obsv(A,C)
查看可控/可观矩阵秩,确认是否存在不可控或不可观测子空间。
rank(ctrb(A,B)), rank(obsv(A,C))
- 若秩小于状态维数,说明有冗余(不可控或不可观),需要先做可控/可观子空间分解。
- 用
-
平衡降阶(可选) 如果想在保留主要特性下更进一步降阶,可用
sys_bal = balreal(sys); sys_red = modred(sys_bal, indices_to_remove);
或直接
sys_red = balred(sys, r);
用 Hankel 奇异值自动去掉贡献最小的模式。
-
避免数值爆炸/精度问题:
- 如果原始 A A A 矩阵元素跨度极大(如首个极点是 1 0 4 10^4 104,其余都是 1 0 − 1 10^{-1} 10−1 量级),建议先缩放状态或做“坐标变换”让系统矩阵条件数改善。
- 保持同一数量级,有助于数值算法(计算特征值、零点)更稳健。