1

我试图使用梯形规则在 Simulink 中设计我自己的离散时间积分器的简单实现。这是我努力的结果(考虑我使用 1 作为时间积分间隔): 然后,为了仔细检查我是否做对了所有事情,我将结果与标准 Simulink 离散时间积分器模块(配置为使用梯形规则当然):

当我让步长在时间 1 上升时,一切运行良好(自定义和默认积分器块都以 0 作为初始条件):

而随着时间 0 的步长上升,我得到了两个积分器块响应之间的差异:

  • 自定义块:@Integral(t=0)=0.5; @积分(t=1)=1.5
  • 默认块:@Integral(t=0)=0; @t=1 积分(t=1)=1

我认为这取决于我的自定义块在 t=0 和初始条件 = 0 之间积分(即在 0 和 1 之间应用梯形规则,因此得到 0.5)。

解决此问题并使我的自定义块在零时间也显示与默认块相同的行为的最佳方法是什么?我缺少任何参数/设置吗?

谢谢!

4

1 回答 1

3

请注意,梯形积分器只需要并且应该只具有一个单位延迟。正确的实现如下图所示。

离散积分器

从您在问题中显示的第二张图像中,库块的输出在时间为零时为零。这不是默认行为(如上所示,也如离散时间积分器模块文档的积分和累积方法小节中所讨论的那样)。

您是否将初始条件设置State更改为Output?如果是这样,则需要适当修改自定义实现中的状态。

于 2015-09-23T17:55:22.120 回答