怎么能使Simulink的仿真速度更快?
現在的專(zhuān)業(yè)軟件都是越做越大,功能成倍成倍地增加,而處理的對象也是越來(lái)越復雜,特別是使用一些仿真軟件在高精度下建模仿真的時(shí)候,因為PC上硬件的發(fā)展速度慢于軟件功能復雜化的速度,就造成了我們的仿真看起來(lái)是越跑越慢了。那以電子、通信、控制等領(lǐng)域都廣泛使用的Simulink為例,有沒(méi)有什么好的辦法能讓我們的仿真速度更快一點(diǎn)呢?在此總結一下,我們可以在以下的幾點(diǎn)中進(jìn)行一些改進(jìn)。
本文引用地址:http://dyxdggzs.com/article/185304.htm首先是模型的搭建問(wèn)題。在Simulink環(huán)境中建模時(shí),以s域的表達式進(jìn)行建模時(shí)問(wèn)題要少一些,增大誤差限、取消過(guò)零檢測等可以提高發(fā)展速度,減少警告信息。而z域的情況下要注意的問(wèn)題會(huì )多一點(diǎn)。第一點(diǎn)是把模型中的代數環(huán)(Algebraic Loop)要消除掉;因為z域處理的數據都是一拍一拍按照采樣周期處理的,所以如果一個(gè)數據既作為輸入,同時(shí)又無(wú)延時(shí)地作為輸出,就產(chǎn)生了數值處理的問(wèn)題,造成仿真速度顯著(zhù)下降,處理的方法一般也不難,把反饋加一個(gè)延時(shí)環(huán)節就好了。另外就是仿真步長(cháng)的問(wèn)題,在能保證仿真精度的情況下,盡量使用大的步長(cháng)可以顯著(zhù)提高仿真速度;這個(gè)最大的仿真步長(cháng)自然可以按照香農采樣定律來(lái)確定,但是一般情況下選擇仿真步長(cháng)為4-10倍的最大采樣頻率是足夠了。
其次是可以改變仿真的模式。在老版本Simulink中,這個(gè)選擇很少,但是新版本有了Normal、Accelerator和Rapid Accelerator、HIL等模式。硬件在回路HIL顯然速度最快,但是好多時(shí)候并不適用,因為首先要有相應的硬件,其次是仿真對象要支持代碼生成。因為Simulink用的是一種解釋性的語(yǔ)言,normal模式就可以理解為Matlab解釋一句,操作系統執行一句,速度自然不會(huì )太快;Accelerator則是把一部分共享模塊編譯為庫文件,例如dll進(jìn)行調用,相當于混合模式,既有解釋-執行,也有直接調用,速度;Rapid Accelerator則是把整個(gè)模型編譯為操作系統下獨立運行的程序,少了Simulink解釋給操作系統的工作,自然運行速度快,代價(jià)則是需要一定的時(shí)間來(lái)編譯模型;這種模式對PC的硬件配置要求是相對比較高的,內存少于3GB時(shí)容易出錯。
再者就是有一些模塊會(huì )顯著(zhù)拖慢仿真速度,它們相當于“木桶理論”中的那塊“短板”了。例如Simulink中的X-Y圖這樣實(shí)時(shí)刷新繪圖的模塊。如果模式中有這個(gè)模塊,則仿真的時(shí)候它會(huì )緩慢地刷新X-Y圖,仿真速度肯定快不了。如果有別的方法替代則可以加快仿真速度,例如先把數據保存到工作空間里,等仿真結束之后再繪制X-Y圖等。一些非線(xiàn)性的模塊,例如一個(gè)非線(xiàn)性的MOSFET模型,自然也比理想開(kāi)關(guān)所需要的仿真時(shí)間長(cháng)。
第四種方法是并行執行和分布式執行,相當于多個(gè)人一起完成一項工作,前提是要有并行執行的許可和分布式執行的許可。并行執行就是在多核CPU的計算機上,打開(kāi)多個(gè)Matlab,然后自動(dòng)或者手動(dòng)分配進(jìn)行并行處理;分布式執行則是多臺計算機使用高速網(wǎng)絡(luò )互聯(lián)之后分別處理。這種仿真方法其速度提高非常顯著(zhù),特別是在處理大量迭代計算的時(shí)候,不過(guò)不是一般的開(kāi)發(fā)者所能具備的。
此外,從2012b以后的版本開(kāi)始,Simulink自帶了Simulink Performance Advisor工具,可以幫助我們發(fā)現影響仿真速度的瓶頸,并提出相應的建議。不過(guò)它無(wú)法或者我們搭建模型的意圖是神馬,所以還需要我們在搭建模式的時(shí)候就按照前面幾條建議進(jìn)行一些必要的修改。
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)
評論