给matlab增添数组元素是经常用到的功能,但是,有时候效率特别低。可进行如下测试:
s = 50000;
tic
A = [];
for i = 1:s
A = [A,i];
end
toc
Elapsed time is 3.675602 seconds.
会发现,随着i的增大,显示越来越慢。可以发现,越到后面越慢。这是因为matlab需要对每个元素进行移动。。。而如果采用下标赋值的形式:
s = 50000;
tic
A = [];
for i = 1:s
A(i) = i;
end
toc
Elapsed time is 0.023905 seconds.
则有明显的改进。
而如果采用先声明空间,后改变值的方式:
s = 50000;
tic
A = zeros(1,s);
for i = 1:s
A(i) = i;
end
toc
Elapsed time is 0.001246 seconds.
比上述方式快近20倍,比第一种方式快了3000倍。而且随着s的增大,这个倍数还会增大。