MATLAB 程序优化(加速)一般方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/carloswc/article/details/82143329

一、向量化

尽量使用矩阵操作,避免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 可以按列访问

猜你喜欢

转载自blog.csdn.net/carloswc/article/details/82143329