pole

动态系统的极点

语法

P = pole(sys)

P = pole(sys,J1,…,JN)

说明

P = pole(sys) 返回 SISO 或 MIMO 动态系统模型 sys 的极点。输出以 sys.TimeUnit 中指定的时间单位的倒数表示。动态系统的极点决定了系统的稳定性和响应。

开环线性时不变系统稳定的条件是:

  • 在连续时间中,传递函数的所有极点都具有负实部。当极点在复 s 平面上可视化时,它们必须全部位于左半平面 (LHP) 才能确保稳定性。
  • 在离散时间中,所有极点的幅值必须严格小于 1,即它们必须全部位于单位圆内。

P = pole(sys,J1,…,JN) 返回模型数组 sys 中下标为 (J1,…,JN) 的条目的极点 P。

示例

离散时间传递函数的极点

计算以下离散时间传递函数的极点:

sys(z)=0.04798z−0.0464z2−1.81z+0.9048sys(z) = \frac{0.04798z - 0.0464}{z^{2} - 1.81z + 0.9048}sys(z)=z21.81z+0.90480.04798z0.0464

sys = tf([0.04798 0.0464],[1 -1.81 0.9048],0.1);
P = pole(sys)

P = 2×1 complex

0.9050 + 0.2929i
0.9050 - 0.2929i

对于稳定的离散系统,其所有极点的幅值必须严格小于 1,即它们必须全部位于单位圆内。本例中的极点是一对共轭复数,且位于单位圆内。因此,系统 sys 是稳定的。

传递函数的极点

计算以下传递函数的极点:

sys(s)=4.2s2+0.25s−0.004s2+9.6s+17sys(s) = \frac{4.2s^{2} + 0.25s - 0.004}{s^{2} + 9.6s + 17}sys(s)=s2+9.6s+174.2s2+0.25s0.004

sys = tf([4.2,0.25,-0.004],[1,9.6,17]);
P = pole(sys)

P = 2×1

-7.2576
-2.3424

对于稳定的连续系统,其所有极点必须具有负实部。sys 是稳定的,因为极点为负,即它们位于复平面的左半部分。

数组中模型的极点

对于此示例,加载 invertedPendulumArray.mat,其中包含一个 3×3 的倒立摆模型数组。当您沿着 sys 的单个列从一个模型移动到另一个模型时,摆的质量会发生变化;当您沿着单个行移动时,摆的长度会发生变化。使用的质量值为 100g、200g 和 300g,使用的摆长分别为 3m、2m 和 1m。

Column 1Column 2Column 3Row 1100g,3m100g,2m100g,1mRow 2200g,3m200g,2m200g,1mRow 3300g,3m300g,2m300g,1m \begin{array}{cccc} & \text{Column 1} & \text{Column 2} & \text{Column 3} \\ \text{Row 1} & 100g,3m & 100g,2m & 100g,1m \\ \text{Row 2} & 200g,3m & 200g,2m & 200g,1m \\ \text{Row 3} & 300g,3m & 300g,2m & 300g,1m \\ \end{array} Row 1Row 2Row 3Column 1100g,3m200g,3m300g,3mColumn 2100g,2m200g,2m300g,2mColumn 3100g,1m200g,1m300g,1m

load(‘invertedPendulumArray.mat’,‘sys’);
size(sys)

3x3 传递函数数组。
每个模型有 1 个输出和 1 个输入。

查找模型数组的极点。

P = pole(sys);
P(:,:,2,1)

ans = 3×1

2.1071

-2.1642
-0.1426

P(:,:,2,1) 对应于摆锤重量为 200g、长度为 3m 的模型的极点。

输入参数

sys — 动态系统

动态系统模型 | 模型数组

动态系统,指定为 SISO 或 MIMO 动态系统模型,或 SISO 或 MIMO 动态系统模型的数组。可以使用的动态系统包括连续时间或离散时间数值 LTI 模型,例如 tf、zpk 或 ss 模型。

如果 sys 是广义状态空间模型 genss 或不确定状态空间模型 uss,则 pole 返回 sys 的当前值或标称值的极点。如果 sys 是模型数组,则 pole 返回 sys 中下标为 J1,…,JN 的模型的极点。有关模型数组的详细信息,请参阅 Model Arrays。

J1,…,JN — 要提取极点的数组中模型的索引

正整数

要提取极点的数组中模型的索引,指定为正整数。您可以提供与 sys 中数组维度数量一样多的索引。例如,如果 sys 是一个 4×5 的动态系统模型数组,则以下命令提取数组中条目 (2,3) 的极点。

P = pole(sys,2,3);

输出参数

P — 动态系统的极点

列向量 | 数组

动态系统的极点,以标量或数组形式返回。如果 sys 是:

  • 单个模型,则 P 是动态系统模型 sys 的极点列向量。
  • 模型数组,则 P 是 sys 中每个模型的极点数组。

P 以 sys.TimeUnit 中指定的时间单位的倒数表示。例如,如果 sys.TimeUnit = ‘minutes’,则 pole 以 1/分钟 表示。

根据系统模型的类型,极点按以下方式计算:

  • 对于状态空间模型,极点是 A 矩阵的特征值,或在描述符情况下是 AλE 的广义特征值。
  • 对于 SISO 传递函数或零极点增益模型,极点是分母的根。有关详细信息,请参阅 roots。
  • 对于 MIMO 传递函数(或零极点增益模型),极点作为每个 SISO 条目的极点并集返回。如果某些 I/O 对具有公分母,则此类 I/O 对分母的根仅计数一次。

局限性

  • 多重极点在数值上是敏感的,无法高精度计算。重数为 m 的极点 λ 通常会导致计算出的极点分布在以 λ 为中心、半径约为 ρ≈ε1/mρ ≈ ε^{1/m}ρε1/m 的圆上,其中 ε 是相对机器精度 (eps)。

有关多重极点的详细信息,请参阅 Sensitivity of Multiple Roots。

  • 如果 sys 具有内部延迟,则通过首先将所有内部延迟设置为零来获得极点,以便系统具有有限数量的极点,从而创建零阶帕德近似。对于某些系统,将延迟设置为零会创建奇异的代数环,从而导致零延迟近似不当或定义不明确。对于这些系统,pole 会返回错误。

要评估具有内部延迟的模型的稳定性,请使用 step 或 impulse。

版本历史记录

在 R2006a 之前推出

另请参阅

damp | esort | dsort | pzmap | zero | step | impulse | pzplot

主题

  • Pole and Zero Locations
  • Sensitivity of Multiple Roots

版权标注与来源说明

本文译文对应的原文内容,均来源于 MathWorks 官方网站(https://www.mathworks.com/)及官方帮助中心,原文版权均独家归属MathWorks 公司所有。

译文系基于原文进行的非官方翻译,仅为方便个人学习、理解MathWorks相关产品(含MATLAB等)的功能、操作及技术细节而制作,不代表MathWorks公司官方立场,也不构成官方翻译版本。

建议使用者优先查阅官方原文。

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐