根据极点-零点分布进行状态空间模型降阶

根据极点-零点分布进行状态空间模型降阶

  • 极点 告诉你系统自己会怎么"颤动/衰减"------是所有模态的汇总;
  • 零点 告诉你在哪些频率上"输入到输出的链路被一脚踹断"------那些模态对外是不透明的;
  • 极点--零点相同 说明 "内部有这个模态,但外部完全看不到",正是降阶的目标。

极点(Pole)的物理/数学含义

  1. 自然模态(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)。
  2. 时域含义
    • ℜ ( 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 → 永久振荡(边界稳定)。
  3. 频域含义
    • 在频率响应里,离开输入的频率越靠近某个复数极点的虚部,系统对该频率的放大倍数越大(共振/峰值)。

零点(Zero)的物理/数学含义

  1. 传输零点(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 值。
  2. 输入--输出影响
    • 有零点的模式往往是那种"输入作用到这个模态上,会被系统某种耦合机制立刻在输出端给抵消掉",即 在传递路径上打了一个"死结"。

这些脉冲响应来自拥有 相同极点 的系统,那么它们究竟如何产生如此巨大的差异呢?

首先注意到,它们的 传递函数分子 (零点位置)是不同的。我们把这两组传递函数 泛化为二阶系统

左侧系统在 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,频率响应的一部分会缩放,特别是当 z z z 接近于 p p p 的实部时,极点位于 − p -p −p,该项会消失。

  1. 缩放 了无零点响应 y 1 y_1 y1;
  2. 叠加 了 y 1 y_1 y1 的一阶导数项。

极点--零点相同位置:模式抵消

当看到:

vbnet 复制代码
极点: -1.8423, -1.7864, ...  
零点: -1.8423, -1.7864, ...

一一对应,说明:

  1. 这些 极点--零点对 在传递函数里互相抵消,对输入--输出动态没有贡献
  2. 换言之,这部分"内部模态"虽然存在于 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 绘制极点-零点分布

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)结果来看,主要暴露出以下几个问题:

  1. 高阶系统中存在大量"重合"极点--零点
    • 除了一个 幅值约为 − 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):系统在这些模态上既有极点又有相同位置的零点,结果在开环或闭环响应中,这部分动态都会被"抹去",对外表现得像不存在这些模态。
  2. 模型"非最简"/不必要的高阶
    • 当从某个更复杂的结构(比如带有很多中间变量、滤波器、观测器等)直接写出 A , B , C , D A,B,C,D A,B,C,D 后,很容易出现 非最小实现 (non‑minimal realization):可控但不可观测或可观测但不可控的状态分量,被保留在模型里,却对输入---输出响应没有实质贡献。
  3. 大量频率接近零的模式
    • 大量接近 0 (如 − 0.0000 -0.0000 −0.0000)的极点和零点,往往是数值精度或模型降阶/近似造成的"伪模式"------物理上并不存在这么多几乎为零的慢模态("伪零点")。

真正对系统输入---输出贡献 的是 被保留下来的"非抵消"极点/零点 ,对这些模式之外的部分,可以 用 minreal 或降阶方法清理掉。这样既让模型更简洁,也能避免后续控制器设计中出现不必要的麻烦。

  1. 最小化模型: 在 MATLAB 中对状态空间对象调用

    matlab 复制代码
    sys_min = minreal(sys);

    它会自动做可控性/可观测性分析,去掉所有"成对抵消"的极点--零点,得到最简的等价系统。

  2. 数值条件检查:

    • ctrb(A,B)obsv(A,C) 查看可控/可观矩阵秩,确认是否存在不可控或不可观测子空间。
    matlab 复制代码
    rank(ctrb(A,B)), rank(obsv(A,C))
    • 若秩小于状态维数,说明有冗余(不可控或不可观),需要先做可控/可观子空间分解。
  3. 平衡降阶(可选) 如果想在保留主要特性下更进一步降阶,可用

    matlab 复制代码
    sys_bal = balreal(sys);
    sys_red = modred(sys_bal, indices_to_remove);

    或直接

    matlab 复制代码
    sys_red = balred(sys, r);

    用 Hankel 奇异值自动去掉贡献最小的模式。

  4. 避免数值爆炸/精度问题:

    • 如果原始 A A A 矩阵元素跨度极大(如首个极点是 1 0 4 10^4 104,其余都是 1 0 − 1 10^{-1} 10−1 量级),建议先缩放状态或做"坐标变换"让系统矩阵条件数改善。
    • 保持同一数量级,有助于数值算法(计算特征值、零点)更稳健。
相关推荐
少说多想勤做7 个月前
【计算机视觉前沿研究 热点 顶会】ECCV 2024中Mamba有关的论文
人工智能·计算机视觉·目标跟踪·论文笔记·mamba·状态空间模型·eccv
顶呱呱程序1 年前
262 基于matlab的一级倒立摆仿真
开发语言·数学建模·matlab·状态空间模型·二次型最优控制方法·一级倒立摆仿真
deardao1 年前
新一代状态空间模型网络替代Transformer 综述
mamba·状态空间模型