使用Matlab建立个simulink模型,其中用到 S函数,在执行时,S函数在一个步长时间周期里执行几次?想要实现只执行一次,而我再仿真时却执行两次,这是为什么···如图所示:h仿真为步长周期,Tstep=round(t/h)检测执行时间为整数倍时···
首先,S 函数在一个步长内会被多次调用,这是毫无疑问的。一般来说,每步至少会有计算导数和计算输出这两次调用,体现为不同的flag。
其次,在进行积分时,根据误差控制的要求,对于同一步长,可能会多次进行导数和输出计算,如图中灰色部分所示。这个次数是不确定的。
追问
我在程序中,使用满足一定调教及调用字程序的部分,如何操作才能保证在每个步长只调用一次呢?
追答【使用满足一定调教及调用字程序的部分】,抱歉,我没看懂这句话 -_-||||
【如何操作才能保证在每个步长只调用一次】,S函数的调用是由仿真引擎决定的,用户没有办法保证函数只被调用一次。当然,可以通过采用一点技巧(比如,记忆上次调用的时间参数,如果本次时间与之相同则直接返回 ),使得S函数的内容在一个步长实际只执行一次。但这种处理可能会使得仿真结果不可靠,不建议。