matlab中可以无需定义而直接使用
当遇到需要不断扩展的向量时,有三种方法来扩展
1.a=[a,new]
2.a(end+1)=new
3.预先定义a=zeros(length)
然后a(i)=new
比较一下三种方法的运算速度,在win7 matlab2012a 环境下:
a=1;
tic
for i=2:100000
a=[a,1];
end
toc
a=1;
tic
for i=2:100000
a(i)=1;
end
toc
tic
a=zeros(1,100000);
for i=2:100000
a(i)=1;
end
toc
结果:
Elapsed time is 13.368765 seconds.
Elapsed time is 0.029842 seconds.
Elapsed time is 0.004913 seconds.
结论:
1.先定义好数组维度肯定是运算最快的方法
2.当实际情况中不能先定义维度时,使用新元素复制方法
即a(end)=new
注:a(end)会自动找到a的最后一个元素
3.尽量不要使用分块数组重构方式
即不要使用a=[a,new]这种方式,其耗时远高于另两种方式
加载中,请稍候......