ライブスクリプトの出力をクリアする方法
25 ビュー (過去 30 日間)
古いコメントを表示
figureが表示されるライブスクリプトを作成しています。
for文で複数のデータを回す際に、すべてのfigureが右画面に蓄積されていき、重くなってしまいます。
出力しないようにfor分内に、clfやcloseを入れてもクリアできません。
何か解決方法はありますでしょうか?
2 件のコメント
Dyuman Joshi
2023 年 9 月 16 日
Google translation -
Title > How to clear live script output
Description > I am creating a live script where a figure is displayed.
When passing multiple data using a for statement, all the figures accumulate on the right screen and become heavy.
Even if you put clf or close in the for section to prevent output, it cannot be cleared.
Is there any solution?
採用された回答
Tak
2023 年 9 月 16 日
編集済み: Tak
2023 年 9 月 18 日
figure の Visibleプロパティをoffにすることで、ライブエディター上での表示をOFFにできます。
for n=1:5
figure('Visible','off')
surf(peaks)
end
ライブエディター上だけでなく、コマンドウィンドウから呼び出し実行した場合も figure ウィンドウが非表示になりますのでご注意ください。
4 件のコメント
Tak
2023 年 9 月 19 日
やりたいこととしては以下のような感じでしょうか。
- ループ処理の中で複数の figure ウィンドウがある
- 2回目以降はユーザー判断で解析継続/中止を判断したい
- 複数の figure ウィンドウを1回目はライブエディター上で表示したい
- 複数の figure ウィンドウを2回目以降は非表示にしたい
ループ処理の中断方法
やり方はいくつかありそうですが、ライブエディターでの実行環境となると keyboard コマンドを挟むことで一時中断でしょうか。継続する場合は ライブエディター タブの [続行] をクリックすることで処理が再開されます。
2回目以降のfigureウィンドウを非表示にする
for n=1:5
figure
surf(peaks)
figure
surf(peaks(20))
figure
surf(peaks(10))
if n==1
% ループ処理の中断
keyboard
end
end
% figure オブジェクトの Visible プロパティの一括変更 (close all でも可)
fig = findobj('Type', 'figure');
set(fig, 'Visible', 'off')
その他の回答 (1 件)
Hiroshi Iwamura
2023 年 9 月 19 日
clear
close all
f = figure;
f.Visible = "off";
for n=1:5
plot(rand(10,2))
% drawnow % この2行は確認用
% pause(0.5)
end
ではいかがでしょう?
f.Visible = "on"; にしてしまうとポップアップするので、普通に表示させたい場合は4行目をコメントアウトします。
2 件のコメント
Hiroshi Iwamura
2023 年 9 月 19 日
あるいは描画が重いようであれば、データだけを書き換えるようにすると、少しは早くなります。
for n=1:5
if n == 1
p = plot(rand(10,2));
else
y = rand(10,2);
p(1).YData = y(:,1);
p(2).YData = y(:,2);
end
end
参考
カテゴリ
Help Center および File Exchange で グラフィックス オブジェクトのプログラミング についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!