主要内容

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

pole

动力系统的极点

说明

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

如果满足以下条件,则开环线性时不变系统是稳定的:

  • 在连续时间中,传递函数的所有极点都有负实部。当极点在复数 s 平面上可视化时,它们必须全部位于左半平面 (LHP) 以确保稳定性。

  • 在离散时间中,所有极点的幅值必须严格小于一,也是说,它们必须全部位于单位圆内。

对于稀疏状态空间模型,此语法计算幅值最小的前 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

对于稳定的离散系统,其所有极点的幅值必须严格小于一,也是说,它们必须全部位于单位圆内。此例中的极点是一对复共轭,位于单位圆内。因此,系统 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 的极点列向量

  • 一个模型数组,则 Psys 中每个模型的极点数组

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 具有内部延迟,则通过首先将所有内部延迟设置为零来获得极点,使得系统具有有限数量的极点,从而创建零阶 Padé 近似。对于某些系统,将延迟设置为零会产生奇异代数环,从而导致不正确或定义不明确的零延迟近似。对于这些系统,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 中推出

全部展开

另请参阅

| | | | |

主题