Si tratta di come MATLAB può richiedere tempi molto diversi per tracciare la stessa cosa - e perché.MATLAB scatter3, discrepanze di velocità della trama3
ho generare 10000 punti nello spazio 3D:
X = rand(10000, 1);
Y = rand(10000, 1);
Z = rand(10000, 1);
Allora ho usato uno dei quattro metodi diversi per tracciare questo, per creare una trama così:
ho chiuso tutto figure e liberato lo spazio di lavoro tra ogni corsa per cercare di garantire l'equità.
plotting Bulk utilizzando scatter3:
>> tic; scatter3(X, Y, Z); drawnow; toc
Elapsed time is 0.815450 seconds.
individuale tracciato utilizzando scatter3:
>> tic; hold on;
for i = 1:10000
scatter3(X(i), Y(i), Z(i), 'b');
end
hold off; drawnow; toc
Elapsed time is 51.469547 seconds.
plotting Bulk utilizzando plot3:
>> tic; plot3(X, Y, Z, 'o'); drawnow; toc
Elapsed time is 0.153480 seconds.
individuali plottaggio utilizzando plot3:
>> tic; hold on
for i = 1:10000
plot3(X(i), Y(i), Z(i), 'o');
end
drawnow; toc
Elapsed time is 5.854662 seconds.
Che cosa è che MATLAB fa dietro le quinte nel 'piu' routine di prendere così tanto tempo? Quali sono i vantaggi e gli svantaggi dell'utilizzo di ciascun metodo?
Edit: grazie ai consigli di Ben Voigt (vedi risposte), ho inserito drawnow
comandi nella tempistica - ma questo ha fatto poca differenza per i tempi.
fatto poca differenza? Il tempo per la massa 'plot3' è aumentato di tre ordini di grandezza! –