现在的专业软件都是越做越大,功用成倍成倍地添加,而处理的目标也是越来越杂乱,特别是运用一些仿真软件在高精度下建模仿真的时分,由于PC上硬件的开展速度慢于软件功用杂乱化的速度,就形成了咱们的仿真看起来是越跑越慢了。那以电子、通讯、操控等范畴都广泛运用的Simulink为例,有没有什么好的办法能让咱们的仿真速度更快一点呢?在此总结一下,咱们能够在以下的几点中进行一些改善。
首要是模型的建立问题。在Simulink环境中建模时,以s域的表达式进行建模时问题要少一些,增大差错限、撤销过零检测等能够进步开展速度,削减正告信息。而z域的情况下要注意的问题会多一点。第一点是把模型中的代数环(Algebraic Loop)要消除去;由于z域处理的数据都是一拍一拍依照采样周期处理的,所以假如一个数据既作为输入,一同又无延时地作为输出,就产生了数值处理的问题,形成仿真速度明显下降,处理的办法一般也不难,把反应加一个延时环节就好了。其他便是仿真步长的问题,在能确保仿真精度的情况下,尽量运用大的步长能够明显进步仿真速度;这个最大的仿真步长天然能够依照香农采样规律来确认,可是一般情况下挑选仿真步长为4-10倍的最大采样频率是足够了。
其次是能够改动仿真的形式。在老版别Simulink中,这个挑选很少,可是新版别有了Normal、Accelerator和Rapid Accelerator、HIL等形式。硬件在回路HIL明显速度最快,可是很多时分并不适用,由于首要要有相应的硬件,其次是仿真目标要支撑代码生成。由于Simulink用的是一种解说性的言语,normal形式就能够理解为Matlab解说一句,操作系统履行一句,速度天然不会太快;Accelerator则是把一部分同享模块编译为库文件,例如dll进行调用,相当于混合形式,既有解说-履行,也有直接调用,速度;Rapid Accelerator则是把整个模型编译为操作系统下独立运转的程序,少了Simulink解说给操作系统的作业,天然运转速度快,价值则是需求必定的时刻来编译模型;这种形式对PC的硬件装备要求是相对比较高的,内存少于3GB时简单犯错。
再者便是有一些模块会明显拖慢仿真速度,它们相当于“木桶理论”中的那块“短板”了。例如Simulink中的X-Y图这样实时改写绘图的模块。假如形式中有这个模块,则仿真的时分它会缓慢地改写X-Y图,仿真速度必定快不了。假如有其他办法代替则能够加速仿真速度,例如先把数据保存到作业空间里,等仿真完毕之后再制作X-Y图等。一些非线性的模块,例如一个非线性的MOSFET模型,天然也比抱负开关所需求的仿真时刻长。
第四种办法是并行履行和分布式履行,相当于多个人一同完结一项作业,条件是要有并行履行的答应和分布式履行的答应。并行履行便是在多核CPU的核算机上,翻开多个Matlab,然后主动或许手动分配进行并行处理;分布式履行则是多台核算机运用高速网络互联之后别离处理。这种仿真办法其速度进步十分明显,特别是在处理很多迭代核算的时分,不过不是一般的开发者所能具有的。
此外,从2012b今后的版别开端,Simulink自带了Simulink Performance Advisor东西,能够协助咱们发现影响仿真速度的瓶颈,并提出相应的主张。不过它无法或许咱们建立模型的目的是神马,所以还需求咱们在建立形式的时分就依照前面几条主张进行一些必要的修正。