Main Content

Derivative

输出是输入信号的时间导数

  • 库:
  • Simulink / Continuous

  • Derivative block

说明

Derivative 模块可近似计算输入信号 u 相对于仿真时间 t 的导数。您将获得以下算式的近似值:

dudt,

方法是计算数值差异 Δu/Δt,其中 Δu 是输入值的变化,Δt 是自上一个仿真(主要)时间步以来的时间变化。

此模块接受一个输入并生成一个输出。模块的初始输出为零。

此模块的输入和输出之间的精确关系是:

y(t)=ΔuΔt=u(t)u(Tprevious)tTprevious|t>Tprevious,

其中 t 是当前仿真时间,Tprevious 是上次仿真输出的时间。后者与上次主时间步的时间相同。

Derivative 模块的输出可能对整个模型的动态比较敏感。输出信号的准确度取决于仿真中采用的时间步长的大小。步长越小,此模块的输出曲线就越平滑和准确。但是,与具有连续状态的模块不同,当此模块的输入快速变化时,求解器不会采用较小的步长。根据驱动信号和模型的动态,此模块的输出信号可能包含意外波动。这些波动主要是由驱动信号输出和求解器步长导致的。

由于存在这种敏感度,因此请将模型构造为使用积分器模块(例如 Integrator 模块)而不是 Derivative 模块。Integrator 模块的状态允许求解器调整步长并改进仿真的准确性。请参阅电路模型来获取如何选择最佳形式的数学模型的示例,以避免在模型中使用 Derivative 模块。

如果必须将 Derivative 模块与变步长求解器结合使用,请将求解器最大步长设置为可以使 Derivative 模块生成的回应具有足够准确度的值。为了确定此值,您可能需要使用不同的求解器设置重复运行仿真。

如果此模块的输入为离散信号,则当输入值发生变化时,输入的连续导数会显示一个脉冲。否则为 0。或者,您可以使用信号最后两个值之间的差异定义离散信号的离散导数:

y(k)=1Δt(u(k)u(k1))

对此方程进行 z 变换会得到:

Y(z)u(z)=1z1Δt=z1Δtz.

Discrete Derivative 模块可对此行为进行建模。使用此模块而不是 Derivative 模块可以近似计算离散信号的离散时间导数。

端口

输入

全部展开

要求导的信号,指定为实数标量或向量。

数据类型: double

输出

全部展开

输入信号的时间导数,指定为实数标量或向量。输入信号根据时间求导为:

y(t)=ΔuΔt=u(t)u(Tprevious)tTprevious|t>Tprevious,

其中 t 是当前仿真时间,Tprevious 是上次仿真输出的时间。后者与上次主时间步的时间相同。

数据类型: double

参数

全部展开

Derivative 模块的准确线性化很难,因为该模块的动态方程为 y=u˙,无法将其表示为状态空间方程组。但是,您可以接近线性化,方法是为 Derivative 模块添加极点以创建传递函数 s/(cs+1). 添加极点会在对信号进行微分之前对其滤波,这可以去掉噪声的影响。

默认值 inf 对应于 0 的线性化。

提示

  • 最佳做法是将 c 的值更改为 1fb,其中 fb 是滤波器的折转频率。

  • 参数必须是有限正值。

编程用法

模块参数:CoefficientInTFapproximation
类型:字符向量、字符串
值:'inf'
默认值: 'inf'

模块特性

数据类型

double

直接馈通

多维信号

可变大小信号

过零检测

扩展功能

版本历史记录

在 R2006a 之前推出