Какой алгоритм использует Matlab для динамического изменения размеров векторов и матриц?

Запуск этого кода:

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 изменяет размер вектора, он изменяет его размер, чтобы иметь ровно столько места, сколько ему нужно, не более. Итак, по одному элементу за раз.

Сравните это сметод в солнцеJava-реализация ArrayList, который выделяет достаточно места, чтобы каждое изменение размера выигралЭто должно происходить при каждом назначении выше начальной границы. Очевидно, так как Matlab нетам с открытым исходным кодомнет никакого способа сказать 100%, что они делают, но есть ли лучший способ получить представление о том, как происходит изменение размера? Разве приведенный выше код не является хорошим способом оценить это?

Ответы на вопрос(2)

Ваш ответ на вопрос