运行此代码:
n = 5;
x = zeros(n, 1);
for ix=1:10
x(ix) = rand();
disp(getfield(whos('x'), 'bytes'))
end
输出这个:
40
40
40
40
40
48
56
64
72
80
这似乎表明,当 Matlab 调整向量的大小时,它会调整它的大小以使其具有所需的空间,仅此而已。所以,一次一个元素。
将此与Sun 的 ArrayList 的 Java 实现中的方法进行对比,该方法分配了足够的空间,因此每次调整大小都不需要在超出初始界限的每个分配上发生。显然,由于 Matlab 不是开源的,因此无法 100% 说明他们在做什么,但是有没有更好的方法来了解如何调整大小?上面的代码不是估计这个的好方法吗?