这篇文章是关于MATLAB绘制同样内容时所需时间差异的原因。我在三维空间中生成了一万个点:
我随后使用了四种不同的方法之一来绘制图形,创建了如下所示的图形: 为了确保公正,我在每次运行之间关闭了所有图形并清除了工作区。 使用scatter3进行批量绘图:
MATLAB在“长时间”例程中背后所做的事情是什么?使用每种方法的优缺点是什么?
编辑:感谢Ben Voigt的建议(请参见答案),我已在计时中包含了drawnow命令,但这对时间几乎没有影响。
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命令,但这对时间几乎没有影响。
plot3
的批量处理时间增加了三个数量级! - Ben Voigt