2

我有一个带有一些输入的模型,这些输入通过 Memory 模块馈送到 CMEX S-Function,S-Function 基于这些输入提供输出,这些输入被反馈到 S-Function。经典的代数环场景。我使用内存块来防止这种情况,因为我们的求解器通常是可变时间步长

根据Mathworks 文档,Memory Block 和 Unit Delay 模块的输出在较小的时间步内是固定的。我意识到输入可以是离散的或连续的,但输出只会在主要时间步中是连续的,并且在次要时间步中是固定的。

现在,由于各种原因,对我们来说重要的是模型中的所有内容都在次要主要时间步中更新对我们来说很重要。我想出了一种使用 PWork 向量来存储状态点的先前值并将它们转发到我们使用的 CMEX S-Function 的方法。这可以防止发生代数循环,并确保在较小的时间步内连续,但并不像我想要的那样优雅。

有没有人有任何替代建议?

PS:顺便说一句,我认为无论我的求解器是固定步长还是可变步长,都最好使用内存块,因为它在内部将成为固定步长求解器的单位延迟块。这个假设正确吗?

4

1 回答 1

0

根据这篇文章,使用快速响应传递函数可以实现类似的结果,而无需进入小步骤。

于 2020-11-18T22:34:32.300 回答