我试图使用梯形规则在Simulink中设计我自己的离散时间积分器的简单实现。 这是我努力的结果(考虑我使用1作为时间积分间隔): 然后,只是为了仔细检查我是否做得对,我将结果与标准的Simulink离散时间积分器块(当然配置为使用梯形规则)进行了比较:
当我让步骤在时间1上升时,一切都运行正常(自定义和默认积分器块的初始条件都为0):
当步长在时间0上升时,我得到了两个积分器块响应之间的差异:
我认为这取决于我在t = 0和初始条件= 0之间积分的自定义块(即在0和1之间应用梯形规则,因此得到0.5)。
这是解决此问题的最佳方法,并使我的自定义块在零时显示与默认块相同的行为?我缺少任何参数/设置吗?
谢谢!
答案 0 :(得分:2)
请注意,梯形积分器仅需要,并且应该只有一个单位延迟。正确的实现如下图所示。
从您在问题中显示的第二个图像中,库块的输出在时间等于零时为零。这不是默认行为(如上所示,也在Integration and Accumulation Methods块文档的Discrete Time Integrator子部分中讨论过)。
您是否已将初始条件设置从状态更改为输出?如果是这样,那么需要适当修改自定义实现中的状态。