Chodzi o to, jak MATLAB może zająć bardzo różne czasy, aby narysować to samo - i dlaczego.MATLAB scatter3, plotowanie z szybkością plotowania
generowania 10000 punktów w przestrzeni 3D:
X = rand(10000, 1);
Y = rand(10000, 1);
Z = rand(10000, 1);
Następnie stosuje się jedną z czterech różnych metod wykreślić to, aby utworzyć wykres tak:
I nieczynna i wyczyścił przestrzeń roboczą między każdym biegiem, aby zapewnić sprawiedliwość.
Luzem kreślenie za pomocą scatter3:
>> tic; scatter3(X, Y, Z); drawnow; toc
Elapsed time is 0.815450 seconds.
indywidualna kreślenie za pomocą 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.
Luzem kreślenie za pomocą Plot3:
>> tic; plot3(X, Y, Z, 'o'); drawnow; toc
Elapsed time is 0.153480 seconds.
Indywidualne kreślenia przy użyciu 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.
Co to jest, że MATLAB robi za kulisami w „dłuższe” rutyny do podjęcia tak długo? Jakie są zalety i wady stosowania każdej metody?
Edit: Dzięki poradę Ben Voigt (patrz odpowiedź), mam włączone drawnow
komendy w przejściowymi - ale to uczynił małą różnicę czasów.
Wprowadzono niewielką różnicę? Czas na masę 'plot3' wzrósł o trzy rzędy wielkości! –