这是关于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的建议(见答案),我在时间中包含了drawow命令 – 但这对时间没什么影响.