一、向量化
尽量使用矩阵操作,避免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 可以按列访问
博客介绍了三个加速MATLAB程序的技巧。一是向量化,尽量用矩阵操作,避免for loop,还可设置上下限;二是预分配内存,提前分配好内存能加速程序,若不知大小可先分配大矩阵;三是列储存优先,因MATLAB按列储存,用for loop时可按列访问。
一般方法&spm=1001.2101.3001.5002&articleId=82143329&d=1&t=3&u=883a20eaa34b40e7bd30e0c7979fdd98)
2976

被折叠的 条评论
为什么被折叠?



