天天看點

MATLAB 程式優化(加速)一般方法

一、向量化

盡量使用矩陣操作,避免for loop

小技巧

1.1設定上下限

 tic

A=0:0.00001:10;

B=0:0.00001:10;

Z=zeros(size(A));

y=0;

for i=1:100001

 if (A(i)<0.1) 

     A(i)=0.1;

 elseif (A(i)>0.1) 

     A(i)=0.9;

 end

 Z(i)=sin(0.5*A(i))*exp(B(i)^2);

 y=y+Z(i);

end

 toc

 y

時間已過 0.030514 秒。

tic

A=0:0.00001:10;

B=0:0.00001:10;

Z=zeros(size(A));

y=0;

A=max(A,0.1);

A=min(A,0.9);

y=sin(0.5*A(i))*exp(B(i)^2)';

 toc

 y

時間已過 0.018558 秒。

y =

    1.1824

二、預配置設定記憶體

提前配置設定好記憶體可以加速程式執行,如果不知道大小,可以預先配置設定一個比較打的矩陣。

>> tic 

 x=1;

 x(2)=2;

 x(3)=3;

 x(4)=4;

 x(5)=5;

 toc

 %preallocation

  tic 

  y=zeros(4,1);

 y=1;

 y(2)=2;

 y(3)=3;

 y(4)=4;

 y(5)=5;

 toc

時間已過 0.039377 秒。

時間已過 0.003747 秒。

三、列儲存優先

MATLAB是按列儲存方式column by column.如果不得不用for loop 可以按列通路