figure内のgraphic objectのデータが変更された場合に、画面を自動更新させないことはできますか?
10 views (last 30 days)
Show older comments
以下のコードコードにおいて、①のタイミングで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等のオプションで上記を実現できれば助かります。
0 Comments
Answers (1)
michio
on 9 Jan 2020
Figure の更新を完全に止めるというよりは、更新回数を制限することは可能です。
drawnow limitrate
によると
「drawnow limitrate は、更新回数を 20 フレーム/秒に制限します。前回の更新から 50 ms 以内の場合、あるいは前の変更によりグラフィックス レンダラーがビジー状態になっている場合、drawnow は新規の更新を破棄します。ループ内で graphics オブジェクトを更新していて個々の更新を画面に表示する必要がない場合に、このコマンドを使用します。」
とのこと。役に立ちますでしょうか。
0 Comments
See Also
Categories
Find more on 対話型コントロールとコールバック in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!