假设您有一个Simulink模拟,其中某个信号首先是正的,并且在给定的时间间隔内的某个时间t之后,它变为负数。你的目标是找到零交叉。
第一种方法是在给定间隔内绘制信号,保存并计算过零点。
当针对变化的参数重复该模拟多次时,能够在信号变为负之后停止模拟将是有益的。然后已经有足够的信息来计算Matlab中的过零点。你怎么能这样做?
答案 0 :(得分:2)
是的,使用Stop Simulation块以及块的相应逻辑输入:
答案 1 :(得分:1)
您可以使用if / else
块来控制Simulink模型中的流量。在if / else
块中,您可以选择条件if u > 0
,如果正确则继续正常运行,并使用else
- 选项绕过您原本运行的其余流程。例如,直接跳到范围。
答案 2 :(得分:1)
另一种方式:
您可以在Simulink中使用Hit Crossing Block来查找零点时的时间。
另一种方法 - 使用任何Trigger或Resettable系统。它也检测过零点。例如:this question at SO。
当然,您也可以使用User Defined function
来检测手的零交叉,并同时对信号做任何想法。
关于进行大量模拟然后停止:
您可以使用Check Upper Static Bound在n
时间过零时自动停止模拟。例如:
我为此块设置了upper bound = 10
,这在第10个交叉点停止。
有很多方法可以在这一点或几次保存函数值,但这是另一个问题:)