加速matlab中的循环的一种方式

matlab中经常需要使用到循环操作,尤其是图像操作的时候,一般是直接进行循环操作,那样每次计算都会新申请新内存,减慢了速度,如果提前申请好所需要的内存,矢量化后,就可以明显的加速运算过程,具体例子如下:

% 原始的方式,例子1
tic
MAX_CNT = 1000000;
for i=1:MAX_CNT
    x(i) = i^2;
end
toc
%%
% 加速方式1
tic
MAX_CNT2 = 1000000;
X = zeros(1,MAX_CNT2);
for i=1:MAX_CNT2
    x(i)=i^2;
end
toc
%%
% 加速方式2
tic
MAX_CNT3 = 1000000;
i = 1:MAX_CNT;
x = i.^2;
toc
%% 例子2
% 原始的方式
tic
i = 0;
for t = 0:pi/4:2*pi
    i = i+1;
    x1(i) = sin(t);
end
toc
%%
% 加速方式
tic
t1 = 0:pi/4:2*pi;
x2 = sin(t1);
toc
%%

输出如下:不同的处理器可能运算时间不同,但是规律是差不多的

% 例子1的输出
时间已过 0.063602 秒。
时间已过 0.009146 秒。
时间已过 0.005297 秒。

% 例子2的输出
时间已过 0.002826 秒。
时间已过 0.000596 秒。

猜你喜欢

转载自blog.csdn.net/awyyauqpmy/article/details/79748654
今日推荐