当前位置: 首页 > news >正文

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

  • 根据极点-零点分布进行状态空间模型降阶
    • 极点(Pole)的物理/数学含义
    • 零点(Zero)的物理/数学含义
    • 极点–零点相同位置:模式抵消
    • ✨ 为什么 可以 模型降阶?
  • MATLAB 绘制极点-零点分布

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

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

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

下面举个具体的例子帮助理解,参考 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} bza随着 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) (za) 项会消失,该 模态与 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,

一一对应,说明:

  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} et(极点 -1)→ 留下来了
    • e − 3 t e^{-3t} e3t(极点 -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)结果来看,主要暴露出以下几个问题:

  1. 高阶系统中存在大量“重合”极点–零点
    • 除了一个 幅值约为 − 9.4108 × 1 0 4 -9.4108\times10^4 9.4108×104 的快模,几乎所有极点都落在 − 0.0 … ∼ − 1.0 -0.0…\sim-1.0 0.01.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 中对状态空间对象调用

    sys_min = minreal(sys);
    

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

  2. 数值条件检查:

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

    sys_bal = balreal(sys);
    sys_red = modred(sys_bal, indices_to_remove);
    

    或直接

    sys_red = balred(sys, r);
    

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

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

    • 如果原始 A A A 矩阵元素跨度极大(如首个极点是 1 0 4 10^4 104,其余都是 1 0 − 1 10^{-1} 101 量级),建议先缩放状态或做“坐标变换”让系统矩阵条件数改善。
    • 保持同一数量级,有助于数值算法(计算特征值、零点)更稳健。

相关文章:

  • 设备制造行业如何避免项目管理混乱?
  • 30分钟编写十大排序算法完成
  • NumPy入门:从数组基础到数学运算
  • Redis ⑤-单线程模型 | 常用数据结构
  • 【SAP-CO】成本主数据
  • UWB定位技术在钢铁厂行业中的创新应用与价值实践
  • 代理设计模式:从底层原理到源代码 详解
  • 物理机检查磁盘坏道方式
  • prtobuf的原理
  • 【Luogu】动态规划一
  • TS-300B浊度传感器详解(STM32)
  • STM32单片机入门学习——第46节: [14-1] WDG看门狗
  • Redis在.NET平台中的各种应用场景
  • AI日报 - 2025年4月23日
  • 代理模式(Proxy Pattern)详解:以延迟加载图片为例
  • NLP高频面试题(五十)——大模型(LLMs)分词(Tokenizer)详解
  • 【C++】Json-Rpc框架项目介绍(1)
  • Agent框架LangGraph:实现一个简单的Plan-and-Execute Agent
  • 电子电器架构 --- 面向下一代车辆的演进式(发展演变的)汽车网关
  • 仅追加KV数据库
  • 马上评丨全面取消 “仅退款”,反内卷的必然
  • 上海一小学百名学生齐聚图书馆:纸质书的浪漫AI无法取代
  • 上海市委财经委会议分析研判当前经济运行情况,调度部署下阶段重点工作
  • 几百元的工资优势已不能吸引人才流动,江苏多地探讨“抢人”高招
  • 瑞穗银行(中国)有限公司行长:重庆赛力斯超级工厂的智能化程度令人震惊
  • 全总:五一拟表彰全国劳模先进工作者2426名,盛李豪入选