Simulink仿真引擎如何工作?

时间:2010-10-07 19:01:36

标签: matlab simulation simulink

我想了解Simulink仿真引擎的工作原理。它是否使用离散事件模拟机制(然后如何处理连续时间?)?它是否依赖于基于静态循环的代码生成?还是?

2 个答案:

答案 0 :(得分:4)

在第一个周期之前,它会计算出块的执行顺序(从不需要来自任何其他块的输入开始)

每个周期,它根据输入和块的代码计算每个块的输出。每个块的代码都是静态的,它在将模型放在一起之前主要存在。 (我不知道块选项是否实际更改了代码,或者它们是否仅在运行时在每次迭代时进行评估。)

如果模拟步骤是可变的,那么它比每个周期都计算下一步的大小,主要取决于模型变量的变化速度。它们变化得越快,步长应该越小,因此假设一个短暂的高导数不会比它应该持续更长的时间。 (我不知道这个计算的细节,或许其他人可以解决问题?)因此,“连续”模拟或变步,只意味着Simulink将对每个周期做出有根据的猜测,关于步长是否足够小将时间量化误差保持在可接受的水平。对于完全数字化的硬件,例如计算机的处理器,真正连续的模拟实际上是不可能的。

答案 1 :(得分:0)

我当然不是专家,但答案可能是'它取决于'。

Simulink肯定会对某些事情使用数值积分,对于某些集成商,您最终会得到离散的时间步长。对于其他积分器,可以在模拟运行时更改时间步长 - 这对于模拟“刚性”方程组尤为重要。