用過
Matlab的人都知道,Matlab是一種解釋性語(yǔ)言,存在計(jì)算速度慢的問題,為了提高程序的運(yùn)行效率,matlab提供了多種實(shí)用工具及編碼技巧。
J<5vs3[9 6M<mOhp@}n 1. 循環(huán)矢量化
vU\w3 !Lg}q!*%>V Matlab是為矢量和矩陣操作而設(shè)計(jì)的,因此,可以通過矢量化方法加速M(fèi)文件的運(yùn)行。矢量化是指將for循環(huán)和while循環(huán)轉(zhuǎn)換為等價(jià)的矢量或矩陣操作。下面給出一個(gè)循環(huán)的例子:
@|\s$L ~qLhZR\g^ i=0;
y?R <g^A !+*?pq for n = 0:0.1:1000
{C0OrO2: P`IMvOs& i=i+1;
b]s1Q
]V QLpTz"H y(i)=cos(n);
T h- vG "` ?Wu end
On96N| ?w5nKpG#RI 那么我們可以矢量化為:
\ \mO+N47i +DV6oh n= 0:0.1:1000;
`aWwF}
+Y *V@MAt y=cos(n);
-)vp&- ->"h5h 我們可以用tic和toc函數(shù)來(lái)查看上述各代碼運(yùn)行的時(shí)間,采用for循環(huán)的程序0.39秒(具體時(shí)間和計(jì)算機(jī)配置有關(guān)),而矢量化后幾乎耗時(shí)為0。
DRmh(T B|q3;P 2. 給數(shù)組或矩陣預(yù)分配內(nèi)存
6'sFmC W*/s4 N 特別是使用大型數(shù)組或矩陣時(shí),Matlab進(jìn)行動(dòng)態(tài)內(nèi)存分配和取消時(shí),可能會(huì)產(chǎn)生內(nèi)存碎片,這將導(dǎo)致大量閑置內(nèi)存產(chǎn)生,預(yù)分配可通過提前給大型數(shù)據(jù)結(jié)構(gòu)預(yù)約足夠空間來(lái)避免這個(gè)問題。
ID