Welchen Algorithmus verwendet Matlab, um Vektoren und Matrizen dynamisch zu skalieren?

Ausführen dieses Codes:

n = 5;
x = zeros(n, 1);
for ix=1:10
   x(ix) = rand();
   disp(getfield(whos('x'), 'bytes'))
end

gibt dies aus:

40
40
40
40
40
48
56
64
72
80

Dies scheint darauf hinzudeuten, dass Matlab die Größe eines Vektors so ändert, dass er genau so viel Platz hat, wie er benötigt, und nicht mehr. Also ein Element nach dem anderen.

Vergleichen Sie dies mit derMethode in Suns Java-Implementierung von ArrayList, der genügend Speicherplatz zuweist, damit nicht bei jeder Zuweisung über der ursprünglichen Grenze jede Größenänderung durchgeführt werden muss. Da Matlab nicht Open Source ist, gibt es natürlich keine Möglichkeit, 100% zu sagen, was sie tun, aber gibt es eine bessere Möglichkeit, eine Vorstellung davon zu bekommen, wie die Größenänderung durchgeführt wird? Ist der obige Code kein guter Weg, um dies abzuschätzen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage