这是关于 MATLAB 如何花费非常不同的时间来绘制相同的东西——以及为什么。
我在 3D 空间中生成 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 在“更长”例程中花费这么长时间在幕后做了什么?使用每种方法的优点和缺点是什么?
编辑:
感谢 Ben Voigt 的建议(请参阅答案),我drawnow
在时间安排中包含了命令——但这对时间几乎没有影响。