对于能够使用 MATLAB GUI 中止并行仿真的用例,我想在用户按下停止按钮后停止所有计划的仿真。所有模拟都使用命令一次提交parsim
,因此像回调我的 GUI 变量(应用程序设计器)将是最可取的解决方案。
我考虑过但并未完全提供理想解决方案的方法:
- 模拟管理器提供了使用自己的界面关闭模拟的功能。如果我只有代码,它的停止按钮就会执行......
parsim
使用Simulink.SimulationInput类作为输入来运行仿真,允许preSimFcn
在每次仿真开始时修改。除了到目前为止故意抛出错误之外,我还没有找到一种在其初始化阶段“跳过”模拟的方法。
感谢您的帮助!
更新 1:使用 将preSimFcn
终止时间设置为等于开始时间大大减少了仿真时间。但是由于第一步仍然是计算出来的,所以必须有一个更好的解决方案。
simin = simin.setModelParameter('StopTime',get_param(mdl,'StartTime'))
更新 2:故意抛出执行错误preSimFcn
,例如将其设置为
simin = simin.setModelParameter('SimulationCommand','stop')
为我提供了迄今为止最短的终止时间。但是,它需要捕获和识别对象中的ErrorMessage
错误Simulink.SimulationOutput
。由于这正是我想避免的“丑陋”实现,因此问题仍然存在。