Clear Filters
Clear Filters

figure内のgraphic objectのデータ​が変更された場合に、​画面を自動更新させな​いことはできますか?

2 views (last 30 days)
Tarou
Tarou on 8 Jan 2020
Answered: michio on 9 Jan 2020
以下のコードコードにおいて、①のタイミングでfigureを更新させない方法はありますか。
----
hLine = line([0, 1], [0, 1]);
...
set(hLine, 'XData', [3, 5]); set(hLine, 'YData', [4, 2]); % ①
... (データの変更)
... (データの変更終)
drawnow; % このタイミングでfigureを更新したい
-----
graphic objectの数が非常に多くなった場合、
一つのgraphi objectのデータ更新のみで画面が更新されてしまうと、
すべての処理が終わるまでに非常に時間がかかってしまいます。
そのため、途中段階のgraphic objectのデータ更新時には画面を更新せず、
最後のデータ更新が終わったタイミングで画面更新の要求をかけたいです。
同様のことを実現する機能として、
「matlab.graphics.chart.primitive.Line」のデータソースプロパティ等とrefreshdataがあるかと思いますが、
実装の都合上、figure等のオプションで上記を実現できれば助かります。

Answers (1)

michio
michio on 9 Jan 2020
Figure の更新を完全に止めるというよりは、更新回数を制限することは可能です。
drawnow limitrate
によると
「drawnow limitrate は、更新回数を 20 フレーム/秒に制限します。前回の更新から 50 ms 以内の場合、あるいは前の変更によりグラフィックス レンダラーがビジー状態になっている場合、drawnow は新規の更新を破棄します。ループ内で graphics オブジェクトを更新していて個々の更新を画面に表示する必要がない場合に、このコマンドを使用します。」
とのこと。役に立ちますでしょうか。

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!