1. ホーム
  2. matlab

[解決済み] Matlabで描画しています。図形を保存するか、変数を保存するか?

2022-02-09 07:48:13

質問

MatlabのDRAWNOWに関する質問ですが、ご教授願えませんでしょうか?

を使用する場合 drawnow の中で何が起こっているのでしょうか?

を格納しています。 前のグラフの図 にプロットし、次のグラフの部分を 同じ図 ?

または、前のグラフを全部忘れて 実際の新グラフ (前の部分と次の部分の両方を含む)?

どちらの方法も同じ効果を示しています。 動的なグラフ . しかし、私は内部で何が起こっているかを正確に知りたいのです。

ありがとうございました。

解決方法は?

drawnow は、MATLABが何をしていても停止し、スクリーンに描画することを確認します。

もし、あなたが

hold on
for ii=1:1000
   plot(ii,rand(1)); % assume complicated maths here
end

MATLABはこのコードを実行し、その結果を plot をグラフィックエンジンに呼び出します。しかし、MATLABはループの実行に忙しく、プロットよりもコードが優先されるため、描画を行うことはできません。

もし、あなたが

hold on
for ii=1:1000
   plot(ii,rand(1));
   drawnow; % Take a break, draw everything that you must before continuing
end

そして、コメントにあるように、コードの実行を一時的に停止して、グラフィックスパイプラインにすべてを描画し、その後、コードの実行を継続するのです。

drawnow は、図が格納されるかどうかには何の影響も及ぼしません。 hold on .

もし、全体を再描画するのが心配なら、必ず setget メソッドを使用します。これらを使って get その xdata を変更し、それを set グラフィックスエンジンが再描画や再計算をしないようにすることで、再度、描画することができます。


のドキュメントは hold 関数を使用します。

https://uk.mathworks.com/help/matlab/ref/hold.html