主要内容

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

absorbDelay

z = 0 处的极点或相位移代替时滞

说明

使用 absorbDelay 消除时间延迟,并将这些延迟建模为额外的系统动态特性或频率响应数据。

  • 对于离散时间模型(频率响应数据模型除外),该函数将 k 个采样周期的延迟替换为 k 个极点,其中 z = 0。对于连续时间模型(频率响应数据模型除外),时间延迟无法通过有限个零极点来精确表示。因此,使用 pade (Control System Toolbox) 来计算时间延迟的有理逼近值。

  • 对于连续时间和离散时间两种频率响应数据模型,absorbDelay 将所有时延以相位偏移的形式纳入频率响应数据中。

sysnd = absorbDelay(sysd) 将动态系统模型 sysd 的所有时延纳入系统动态特性或频率响应数据中。

示例

sysnd = absorbDelay(sysd,scope) 指定要吸收哪些延迟组。 (自 R2024a 起)

示例

[sysnd,G] = absorbDelay(___) 返回矩阵 G,该矩阵将 ss (Control System Toolbox) 模型 sysd 的初始状态映射到 sysnd 的初始状态。

示例

全部折叠

建立一个具有时间延迟的离散时间函数。

z = tf('z',-1);
sysd = (-0.4*z -0.1)/(z^2 + 1.05*z + 0.08);
sysd.InputDelay = 3
sysd =
 
              -0.4 z - 0.1
  z^(-3) * -------------------
           z^2 + 1.05 z + 0.08
 
Sample time: unspecified
Discrete-time transfer function.
Model Properties

sysd 的表示将 InputDelay 视为 z^(-3) 的因子,与传递函数分母中出现的系统极点区分开来。

将时间延迟作为极点 z= 0 纳入系统动态特性中。

sysnd = absorbDelay(sysd)
sysnd =
 
        -0.4 z - 0.1
  -------------------------
  z^5 + 1.05 z^4 + 0.08 z^3
 
Sample time: unspecified
Discrete-time transfer function.
Model Properties

sysnd 的表示表明,z^(-3) 这一因式已被吸收为分母中的附加极点。

验证 sysnd 是否没有输入延迟。

sysnd.InputDelay
ans = 
0

建立一个离散时间多项式模型。

m = idpoly(1,[0 0 0 2 3]);

m 转换为传递函数模型。

sys = tf(m)
sys =
 
  z^(-2) * (2 z^-1 + 3 z^-2)
 
Sample time: unspecified
Discrete-time transfer function.
Model Properties

传递函数的分子为 sys,为 [0 2 3],传输延迟 sys.IODelay 为 2。这是因为 B 多项式 m.B 的值有 3 个前导零。第一个固定零点表明该模型中不存在穿透效应。其后的两个零被视为输入-输出延迟。

使用 absorbDelay 将前导零视为常规的 B 系数。

m2 = absorbDelay(m);
sys2 = tf(m2)
sys2 =
 
  2 z^-3 + 3 z^-4
 
Sample time: unspecified
Discrete-time transfer function.
Model Properties

sys2 的分子是 [0 0 0 2 3],传输延迟是 0。模型 m2 通过解除其值的约束,将前导零视为普通系数。m2.Structure.B.Free(2:3)TRUE,而 m.Structure.B.Free(2:3)FALSE

自 R2024a 起

本示例演示了如何使用 absorbDelay 函数消除特定类型的延迟。

考虑一个包含输入和输出信道延迟以及 I/O 对之间延迟的 MIMO 模型。

rng(0)
sys = drss(3,2,3);
sys.InputDelay = [1 0 4];
sys.OutputDelay = [3 1];
sys.IODelay = [0 1 2;3 0 1];

吸收输出通道以及各 I/O 对之间的延迟。

sysnd = absorbDelay(sys,["output","io"]);

验证该系统仅在输入通道中存在延迟。

sysnd.InputDelay
ans = 3×1

     1
     0
     4

sysnd.OutputDelay
ans = 2×1

     0
     0

sysnd.IODelay
ans = 2×3

     0     0     0
     0     0     0

尽管存在延迟,sys 的响应与 sysnd 的响应完全一致。

step(sys,sysnd,'r--')

MATLAB figure

输入参数

全部折叠

具有时滞的动态系统,指定为 SISO 或 MIMO 动态系统模型 (Control System Toolbox)。您可以使用的动态系统包括:

  • 离散时间线性时不变 (LTI) 模型,例如 tfzpk (Control System Toolbox)ss (Control System Toolbox) 模型。

  • 离散时间稀疏模型,例如 sparss (Control System Toolbox)mechss (Control System Toolbox) 模型。

  • 离散时间广义或不确定线性时不变 (LTI) 模型,例如 genss (Control System Toolbox)uss (Robust Control Toolbox) 模型。(使用不确定模型需要 Robust Control Toolbox™ 许可证。)

    生成的模型假设:

    • 对于可调控制设计模块,采用可调组件的当前值

    • 对于不确定的控制设计模块,采用标称模型值

  • 频率响应模型。

对于连续时间参数化模型,请使用 pade (Control System Toolbox)

自 R2024a 起

要吸收的延迟类型,指定为以下值之一。

  • "input" - 仅消除输入延迟,其他延迟保持不变。

  • "output" - 仅消除输出延迟,其他延迟保持不变。

  • "internal" - 仅吸收内部延迟,其他延迟保持不变。

  • "io" - 仅吸收 I/O 通道延迟(MIMO 模型),其他延迟保持不变。

  • 数组 - 仅吸收数组中指定的延迟组合,其他延迟保持不变。例如,若要仅吸收输出延迟和内部延迟,请使用数组 ["output","io"]

输出参量

全部折叠

无时滞的动态系统模型,返回类型与 sysd 相同。

将状态空间模型 sysd 的状态 x0 映射到 sysnd 的初始状态,并以矩阵形式返回。sysnd 的初始条件是 G*x0

版本历史记录

在 R2012a 中推出

全部展开

另请参阅

| (Control System Toolbox) |