#111723#咱们在用并交运算东西箱来屡次运转模子的时间,个别都市转变些甚么,来实现差别的仿真。
在这里,咱们能够通过 Simulink.SimulationInput 工具来实现。起首,咱们为模子新建多少个 Simulink.SimulationInput 工具,而后通过它来界说差别的设置,包含初始状况、模子参数、模块参数、输入信息以及模子应用的种种变量。
这是一个简略的碰撞模子:
设置差别的 Restitution 系数,再实现并行仿真,以下图:
咱们从 -0.9 到 -0.2 取 10 个差别的系数值,而后结构了一个长度为 10 的Simulink.SimulationInput 工具数组。接着应用 setBlockParameter 方式,给指定的模块 blk 的参数 'Gain' 设置了差别的值。最后挪用 parsim ,把Simulink.SimulationInput 数组作为输入参数,停止并交运算。
盘算终了,就会失掉一组Simulink.SimulationOutput 作为前往值。
一些更实在的场景利用
在任务空间界说变量
在 parsim 出来之前,模子并行仿真的一浩劫点在于怎样去治理模子里的种种变量。我在之前的贴子里还先容了种种治理攻略,比方各个模块的参数值不再直接写在对话框里,而是应用剧本来结构。比方这里的重力减速度 g 和规复系数 Cr。
输出的处置
在良多情形下,仿真会发生大批数据。特别在近程盘算机集群上仿真的时间,个别都不须要通报全体的数据。以是,咱们能够对这些记载的数据做后处置,而后通报咱们真正感兴致的那部份。
以下图,这里结构了一个后处置函数 detectFallen,输入仿真成果,前往一个构造体。这里前往的是球跳了多长时光,以及弹跳了几多次。
接着,咱们跟方才一样结构 Simulink.SimulationInput 工具数组。有所差别的是,这里是应用 setVariable 方式来为 workspace 里的变量 Cr 设置差别的值。以后,把方才结构的函数句柄赋给 Simulink.SimulationInput 工具的 postSimFcn 属性。
代码以下:
留神,在挪用 parsim 时,我还应用了 UseFastRestart 来进一步减速仿真。如许设置后,模子在每一个 worker 上只会编译以及初始化一次。
毛病处置
我爱好 parsim 的另一个处所是它对仿真犯错的处置方式。
比方上面这个例子,前往的Simulink.SimulationOutput 工具里包含了毛病提醒信息以及毛病产生之前仿真数据。
这些信息能够辅助咱们懂得模子那里出了错,也不须要从新仿真模子。
假如你基于这些记载数据,也看不出模子那里出了成绩,那末你还能够在当地呆板上应用一样的参数设置来从新运转模子。这时间,你能够应用 SimulaitonInput 工具的applyToModel 方式。
就如它名字所说,这个函数会把这个SimulationInput 工具里的信息来设置当地模子,包含模子设置、参数值、变量值。如许你便可以很轻易失掉一个跟近程犯错的模子一模一样的模子,在当地调试。
更多内容阅读推荐: 燃气灶老是熄火怎么办 |