Речь идет о том, как MATLAB может потребовать совсем другое время для построения одного и того же, и почему.
Я генерирую 10000 точек в трехмерном пространстве:
X = rand(10000, 1);
Y = rand(10000, 1);
Z = rand(10000, 1);
Затем я использовал один из четырех различных методов для построения графика, чтобы создать график, например:
Я закрыл все цифры и очистил рабочее пространство между каждым прогоном, чтобы попытаться обеспечить справедливость.
Массовое построение с использованием scatter3:
>> tic; scatter3(X, Y, Z); drawnow; toc
Elapsed time is 0.815450 seconds.
Индивидуальное построение с использованием 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.
Массовое построение с использованием plot3:
>> tic; plot3(X, Y, Z, 'o'); drawnow; toc
Elapsed time is 0.153480 seconds.
Индивидуальное построение с использованием 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.
Что делает MATLAB за кулисами в «более длинных» подпрограммах, чтобы занимать так много времени? Каковы преимущества и недостатки использования каждого метода?
Edit:
Благодаря совету Бена Фойгта (см. Ответы) я включил drawnow
команды во время - но это мало изменило время.