Речь идет о том, как MATLAB может принимать очень разные времена, чтобы построить одно и то же - и почему.MATLAB scatter3, plot3 speed discards
сгенерировать 10000 точек в 3D-пространстве:
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
команд в сроках - но это не помогло, к временам.
Не так ли? Время для объемного 'plot3' увеличилось на три порядка! –