如何提高MATLAB的運算速度


根據我的一些經驗和相關的參考資料,要想提高其運算的速度,以下的方法可以試一下:
(1)盡可能地用向量化的數組運算代替循環,盡可能地減少使用戶for或while循環,這是因為matlab執行循環運算效率很低而數組運算效率較高。舉個最經典的例子,下面的循環:
k=0;
for t=0:pi/20:2*pi;
k=k+1;
y(k)=cos(t);end;
就可以用t=0:pi/20:2*pi;y=cos(t)代替,這樣即減少代碼量又能提高運算速度
(2)如果非要用循環的話盡可能進行循環內數組的預配置而不是讓程序在循環中不斷地動態配置,好比像C語言中要想使用數組必須先定義數組的長度一樣,比如說如果想要做以下的循環:
k=0;
for t=1:1:20;
k=k+1;
y(k)=t^2;end;
可以事先定義y=linspace(0,0,20)即定義y為一個擁有20個0的一維數組,這樣就相當於是事先對循環內的數組進行了預配置;
(3)盡可能采用MATLAB自帶的函數指令,這些函數都是一些很經典的算法構成的,比如說要想找最大值就應用函數max而不是自己去編程序,這樣只會事倍功半;
(4)盡量采用M函數文件替代M的腳本文件,因為函數文件運行時是采用P碼方式駐留在內存中而不是像腳本文件一樣每運行一次都要經歷把程序裝入內存的過程,因而比較省時;
(5)在循環比較費時的時候可以考慮采用非解釋執行MEX文件來對此進行表達;
(6)盡可能找出導致程序運行緩慢的瓶頸,可以在MATLAB的View:profiler中打開程序剖析器找出程序運行中的瓶頸,具體使用的方法請參考MATLAB的幫助或者在網上尋找;
(7)從硬件來看電腦的CPU或者內存(不是大小而是讀寫速度)可能會是瓶頸,在做大型運算時可以考慮較好的配置。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM