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