是否可以在满足特定条件时停止 Simulink 仿真?
Is it possible to stop a Simulink simulation when a certain condition is met?
假设您有一个 Simulink 仿真,其中某个信号首先为正,在给定时间间隔内的某个时间 t 后,它变为负。您的目标是找到过零点。
第一种方法是绘制给定时间间隔内的信号,保存并计算过零。
当针对不同的参数多次重复此模拟时,在信号变为负值后能够停止模拟将是有益的。那么在Matlab中已经有足够的过零计算信息了。你怎么能那样做?
您可以使用 if / else
块来控制 Simulink 模型中的流程。在 if / else
块中,您可以选择条件 if u > 0
,如果条件为真则继续正常,并使用 else
选项绕过其余流程,否则 [=20] =].比如直接跳转到scope.
是,使用 Stop Simulation 块和块的适当逻辑输入:
另一种方式:
您可以在 Simulink 中使用 Hit Crossing Block 来计算归零时刻的时间。
另一种方法 - 使用任何触发器或可重置系统。它也检测过零。例如:this question at SO.
当然你也可以用User Defined function
用手检测过零,同时用信号做任何你想做的事情。
关于进行大量模拟然后停止:
您可以使用 Check Upper Static Bound 在第 n
次过零时自动停止模拟。例如:
我为这个街区设置了 upper bound = 10
并在第 10 个十字路口停止。
有很多方法可以在这个点或时间数组中保存函数值,但这是另一个问题:)
假设您有一个 Simulink 仿真,其中某个信号首先为正,在给定时间间隔内的某个时间 t 后,它变为负。您的目标是找到过零点。
第一种方法是绘制给定时间间隔内的信号,保存并计算过零。
当针对不同的参数多次重复此模拟时,在信号变为负值后能够停止模拟将是有益的。那么在Matlab中已经有足够的过零计算信息了。你怎么能那样做?
您可以使用 if / else
块来控制 Simulink 模型中的流程。在 if / else
块中,您可以选择条件 if u > 0
,如果条件为真则继续正常,并使用 else
选项绕过其余流程,否则 [=20] =].比如直接跳转到scope.
是,使用 Stop Simulation 块和块的适当逻辑输入:
另一种方式:
您可以在 Simulink 中使用 Hit Crossing Block 来计算归零时刻的时间。
另一种方法 - 使用任何触发器或可重置系统。它也检测过零。例如:this question at SO.
当然你也可以用
User Defined function
用手检测过零,同时用信号做任何你想做的事情。
关于进行大量模拟然后停止:
您可以使用 Check Upper Static Bound 在第 n
次过零时自动停止模拟。例如:
我为这个街区设置了 upper bound = 10
并在第 10 个十字路口停止。
有很多方法可以在这个点或时间数组中保存函数值,但这是另一个问题:)