これは、MATLAB が同じものをプロットするのに非常に異なる時間がかかる方法と、その理由についてです。
3D 空間で 10000 ポイントを生成します。
X = rand(10000, 1);
Y = rand(10000, 1);
Z = rand(10000, 1);
次に、4 つの異なる方法のいずれかを使用してこれをプロットし、次のようなプロットを作成しました。
公平性を確保するために、すべての図を閉じて、実行ごとにワークスペースをクリアしました。
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
で、タイミングにコマンドを含めましたが、これは時間にほとんど違いをもたらしませんでした。