主要内容

本页采用了机器翻译。点击此处可查看英文原文。

pole

动态系统的极点

说明

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

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

  • 连续时间系统:传递函数的所有极点均具有负实部。如果在复 s 平面上可视化极点,所有极点必须位于左半平面 (LHP),才能保证系统稳定。

  • 离散时间系统:所有极点的幅值必须严格小于 1,即所有极点必须位于单位圆内部。

对于稀疏状态空间模型,该语法最多计算幅值最小的前 1000 个极点。 (自 R2025a 起)

示例

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

示例

P = pole(___,Name=Value) 基于一个或多个指定的名称-值参量,计算稀疏模型 sys 的极点的子集。如果您不指定任何名称-值参量,该函数最多可计算幅值最小的前 1000 个极点。当 sys 是非稀疏模型时,该函数会忽略名称-值参量。 (自 R2025a 起)

示例

示例

全部折叠

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

sys(z)=0.0478z-0.0464z2-1.81z+0.9048

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+17

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。

Column1Column2Column3Row1100g,3m100g,2m100g,1mRow2200g,3m200g,2m200g,1mRow3300g,3m300g,2m300g,1m

load('invertedPendulumArray.mat','sys');
size(sys)
3x3 array of transfer functions.
Each model has 1 outputs and 1 inputs.

求模型数组的极点。

P = pole(sys);
P(:,:,2,1)
ans = 3×1

    2.1071
   -2.1642
   -0.1426

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

自 R2025a 起

此示例说明如何计算稀疏梁模型的极点。对于稀疏状态空间模型,pole 基于关注的频率范围计算极点的子集。

加载该模型。

load linBeam.mat
size(sys)
Sparse second-order model with 1 outputs, 1 inputs, and 3303 degrees of freedom.

稀疏模型通常规模较大,计算所有极点可能不可行或计算成本较高。默认情况下,pole 函数最多计算幅值最小的前 1000 个极点。

p = pole(sys);
size(p)
ans = 1×2

        1000           1

为避免计算大量极点,您可以指定其他选项(例如感兴趣的频率范围)。通常指定一个低频带,函数仅会计算固有频率在该范围内的极点。

p2 = pole(sys,Focus=[0 1e4]);
size(p2)
ans = 1×2

     4     1

输入参数

全部折叠

动态系统,指定为 SISO 或 MIMO 动态系统模型或者 SISO 或 MIMO 动态系统模型数组。您可以使用的动态系统包括连续时间或离散时间数值 LTI 模型,如 tf (Control System Toolbox)zpk (Control System Toolbox)ss (Control System Toolbox) 模型。

如果 sys 是广义状态空间模型 genss 或不确定状态空间模型 uss,则 pole 返回 sys 的当前值或标称值的极点。如果 sys 是模型数组,则 pole 返回与 sys 中的下标 J1,...,JN 对应的模型的极点。有关模型数组的详细信息,请参阅模型数组 (Control System Toolbox)

如果 sys 是稀疏状态空间模型(sparss (Control System Toolbox)mechss (Control System Toolbox)),软件会在指定的关注频带内计算极点的子集。对于稀疏模型,请使用名称-值参量来指定计算选项。如果您不指定任何选项,软件最多可计算幅值最小的前 1000 个极点。对于带瑞利阻尼的 mechss 模型,软件根据 (K,M) 的特征值计算极点。否则,软件会根据等效的 sparss 模型计算极点。 (自 R2025a 起)

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

P = pole(sys,2,3);

名称-值参数

全部折叠

Name1=Value1,...,NameN=ValueN 的形式指定可选参量对组,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。

示例: B = pole(sparseSys,Focus=[0 10],Display="off")

自 R2025a 起

感兴趣的频率范围,指定为 [fmin,fmax] 形式的向量。当您指定关注的频率范围时,算法仅会计算固有频率在此范围内的极点。对于离散时间模型,软件通过突斯汀变换来逼近等效的固有频率。

对于对称半正定稀疏模型,您可以指定任意满足 0 ≤ fmin < fmax 的频率范围。对于非对称 sparss 模型,您必须指定频率范围为 [0,fmax][fmin,inf]

由于软件会计算指定频率范围内的所有极点,因此您通常会指定一个低频范围来限制计算大量极点。默认情况下,不指定关注的频率范围 ([0 Inf]),并且算法最多计算 MaxNumber 个极点。

自 R2025a 起

要计算的零极点的最大数目,指定为正整数。此值限制算法计算的极点的数目。

自 R2025a 起

频谱偏移,指定为有限标量。

软件通过对 A-sigma*E 使用逆幂迭代法,计算固有频率在指定范围 [0,fmax] 内的极点,从而获得最接近偏移量 sigma 的特征值。当 A 为奇异矩阵且 sigma 为零时,由于不存在逆矩阵,算法会失败。因此,对于具有积分作用的稀疏模型(s = 0,或对于离散时间模型,在 z = 1 时),您可以使用此选项将极点或零点隐式地偏移至最接近此偏移值的值。指定的偏移值需不等于原始模型的现有极点值。

自 R2025a 起

计算的极点的精度容差,指定为正有限标量。此值控制逆幂迭代中计算得到的特征值的收敛。

自 R2025a 起

显示或隐藏进度报告,指定为 "off""on"

输出参量

全部折叠

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

  • 单个模型,则 P 是由动态系统模型 sys 的极点组成的列向量

  • 模型数组,则 P 是由 sys 中每个模型的极点组成的数组

P 表示为在 sys.TimeUnit 中指定的时间单位的倒数。例如,如果 sys.TimeUnit = 'minutes',则极点以 1/分钟表示。

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

  • 对于状态空间模型,极点是 A 矩阵的特征值;在描述符形式的状态空间模型情况下,是 A - λE 的广义特征值。

    对于稀疏状态空间模型,极点是使用逆幂迭代法获得的部分特征值 [1]。 (自 R2025a 起)

  • 对于 SISO 传递函数或零极点增益模型,极点是分母的根。有关详细信息,请参阅 roots

  • 对于 MIMO 传递函数(或零极点增益模型),极点作为每个 SISO 条目的极点的并集返回。如果部分 I/O 对组具有公共分母,此类 I/O 对组分母的根仅计计一次。

限制

  • 重极点在数值上较为敏感,无法以高精度计算。重数为 m 的极点 λ,计算结果通常表现为以 λ 为中心、半径量级如下的圆上分布的极点簇

    ρε1/m,

    其中 ε 为机器相对精度 (eps)。

    有关重极点的详细信息,请参阅Sensitivity of Multiple Roots (Control System Toolbox)

  • 如果 sys 有内部延迟,需先将所有内部延迟设置为零(即创建零阶帕德逼近),使系统具有有限个极点,再计算极点。对于某些系统,将延迟设置为零会创建奇异代数环,这会导致零延迟逼近不正确或未明确定义。对于这些系统,pole 会返回错误。

    要评估具有内部延迟的模型的稳定性,请使用 stepimpulse

算法

对于稀疏状态空间模型,pole 使用 Krylov-Schur 算法 [1] 进行逆幂迭代,以计算指定频带内的极点。

参考

[1] Stewart, G. W. “A Krylov--Schur Algorithm for Large Eigenproblems.” SIAM Journal on Matrix Analysis and Applications 23, no. 3 (January 2002): 601–14. https://doi.org/10.1137/S0895479800371529.

版本历史记录

在 R2012a 中推出

全部展开

另请参阅

| | | | |

主题