1 问题描述
在matlab中,如果在每次循环中增加一个数组元素,直接对数组进行赋值时,如果没有预先分配好内存,那么matlab在每次运行到此处时,都会重新向系统申请一次内存,从而导致程序运行速度变得很慢。
2 解决方法
预先分配数组内存,可以适当地划分大一点的内存以保证满足数组的长度要求。
3 案例说明
首先需要明确,matlab可以实用tic和toc计算程序之间所耗费的时间。
(1) 没有预先分配内存时
tic
for i = 1:10000000
a(i) = i;
end
toc
得到的结果如下:
(2) 分配内存时
tic
a = zeros(1, 10000000);
for i = 1:10000000
a(i) = i;
end
toc
得到的结果如下:
计算二者之间的差距: