假设您有一个Simulink仿真,其中某个信号首先是正的,在给定的时间间隔内经过一段时间t之后,它就变成了负值。你的目标是找到过零点。
第一种方法是绘制给定间隔上的信号,保存它并计算过零。
当对不同的参数重复多次仿真时,当信号变为负值时,能够停止仿真是很有帮助的。然后,在Matlab中已经有足够的信息用于计算过零.你怎么能这么做?
发布于 2015-12-18 11:08:47
是的,使用具有适当逻辑输入的停止模拟块:

发布于 2015-12-18 10:45:36
您可以使用if / else块来控制Simulink模型中的流。在if / else块中,您可以选择条件if u > 0,如果条件为真则继续正常,并使用else-option绕过您本来要运行的其他流。例如,直接跳转到作用域。

发布于 2015-12-18 11:49:51
另一种方式:
User Defined function通过您的手检测零交叉,并在同一时间对信号做任何您想做的事情。关于做大量的模拟,然后停止:您可以使用检查上静态界自动停止模拟,在n第四次过零的时刻。例如:

我把upper bound = 10设为这个街区,在第十个十字路口停下来。有很多方法可以保存函数值在这个点或只是数组的时间,但这是另一个问题:)
https://stackoverflow.com/questions/34352902
复制相似问题