matlab数据流仿真和时间流仿真
simulink 使用的动态系统仿真,仿真需要求状态方程和输出方程,关键是求状态方程,而状态方程的求解有多种算法,可变步长和定步长,所以仿真时对求解器的选择和步长的设置就比较重要。
所谓基於数据流的仿真方式,就是指在整个仿
真时间段上,根据信号流动的先后顺序逻辑,从信号输入端开始,对一个子系统进行仿真得出
在整个仿真时间段上的状态数据和输出,然后基於这些数据再对下一个子系统进行仿真,直到
整个系统的信号输出端。
在基於数据流的仿真方式下,只有当上一个阶段的计算完成后,才开始进入下一阶段的计
算,因此在求解的过程中,我们无法「实时」地观察到整个系统各个状态变量的变化情况,只
有当系统各个阶段均已经计算完毕之后,才能够观察到计算时间段上系统的状态和各个输出
点的信号变化情况。
所谓基於时间流的仿真,就是按照时间的推进,同步计算系统中各个子系统的状态演进过
程。只有当前时刻上的系统中全部子系统的所有状态均已计算得出之后,才开始进行下一个
时刻的计算,这个过程一直持续下去,直到计算时刻推进到仿真终止时间為止。
由此可见,基於时间流的仿真求解过程中,在当前时刻计算完毕后我们就能够瞭解系统的
状态全貌,因此可以做到「实时」地观测系统中各个状态变量的变化情况。
基於数据流的仿真方法和基於时间流的仿真方法各有特点。一般而言,在 Matlab 编程中
採用基於数据流的仿真方法容易利用矩阵运算模式,从而提高计算效率和速度,而基於时间
流的仿真方法则需要通过循环结构编程来实现时间推进,相对效率较低。但是如果循环结构
是经过仿真平台内部优化处理的,那麼基於时间流的仿真甚至也能够达到基於数据流的效率。
因此,在使用 Matlab 语言的编程仿真中,较多地採用了基於数据流的方法,而在 Simulink 可
视化编程中,则使用循环优化的基於时间流的仿真方法。