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

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

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

在这里插入图片描述

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

在这里插入图片描述

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

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

当看到:

极点: -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 量级),建议先缩放状态或做“坐标变换”让系统矩阵条件数改善。
    • 保持同一数量级,有助于数值算法(计算特征值、零点)更稳健。
http://www.xdnf.cn/news/82981.html

相关文章:

  • 火山RTC 5 转推CDN 布局合成规则
  • 2024年ESWA SCI1区TOP:量子计算蜣螂算法QHDBO,深度解析+性能实测
  • 【简单学习】llamaindex环境搭建以及构建RAG
  • 真实趋势策略思路
  • 高并发秒杀使用RabbitMQ的优化思路
  • Vue2-重要知识点
  • Reflex 完全指南:用 Python 构建现代 Web 应用的终极体验
  • SpringCloud组件—Eureka
  • 面向组织的网络安全措施
  • 详解Node.js中的setImmediate()函数
  • 智慧城市新标配:苏州金龙无人清扫车开启城市清洁“智”时代
  • C++(初阶)(十二)——stack和queue
  • Web网页核心技术解析:从结构到节点操作
  • 大模型学习笔记------Llama 3模型架构之分组查询注意力(GQA)
  • [Git] Git Stash 命令详解
  • 【MATLAB第115期】基于MATLAB的多元时间序列的ARIMAX的预测模型
  • 线缆屏蔽与浪涌测试
  • Linux中查询进程服务,通过端口方式关闭
  • C++模板学习(进阶)
  • PH热榜 | 2025-04-22
  • 客户端本地搭建
  • Baidu Comate初体验:强大的全局ai工具
  • 嘻游后台系统与机器人模块结构详解:功能逻辑 + 定制改造实战
  • 性能比拼: Go vs Java
  • mybatis实现增删改查1
  • 三网通电玩城平台系统结构与源码工程详解(二):Node.js 服务端核心逻辑实现
  • 香橙派使用USB摄像头
  • 【锂电池剩余寿命预测】LSTM长短期记忆神经网络锂电池剩余寿命预测(Matlab源码)
  • Trae国内版怎么用?Trae IDE 内置 MCP 市场配置使用指南
  • STM32提高篇: WIFI通讯