运行此代码:
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%他们做什么,但是有没有更好的办法来了解调整大小的方式呢?上面的代码不是估算此代码的好方法吗?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句