進捗報告テキストのリアルタイム表示

19 Ansichten (letzte 30 Tage)
junya ishii
junya ishii am 20 Okt. 2022
Verschoben: Atsushi Ueno am 20 Okt. 2022
コマンドウィンドウにdispで表示させる以外での,プログラムの進捗具合を文章で報告する方法を探しています.
私は普段,
clc
disp('PartA......')
clc
disp('PartB......')
clc
disp('PartC......')
のように数秒では終わらないプログラムの進捗を確かめるためにコマンドウィンドウに表示させていますが,わけあってこれとは違う方法を探しています.可能であるならば,もう一つの文章を表示させる第二のコマンドウィンドウを作り,そこにdispさせるのが理想ですが,手段がありません.
簡単に思いつく最も愚直な方法は,figureを作成しclfした後textで文章を表示,drawnowで更新ですが,少々芸に欠けると思います.
diaryなどで.txtに書き込むようにし,予めそのテキストファイルを開いたままプログラムを実行しても,ファイルは逐次更新されず,開いた時点のままです.
なにかスマートな解決策はありませんか?

Akzeptierte Antwort

Hernia Baby
Hernia Baby am 20 Okt. 2022
waitbar をお使いください。
f = waitbar(0,'Please wait...');
pause(.5)
waitbar(.33,f,'Loading your data');
pause(1)
waitbar(.67,f,'Processing your data');
pause(1)
waitbar(1,f,'Finishing');
pause(1)
close(f)
  2 Kommentare
Atsushi Ueno
Atsushi Ueno am 20 Okt. 2022
Verschoben: Atsushi Ueno am 20 Okt. 2022
fig = uifigure;
d = uiprogressdlg(fig,'Icon','membrane.png');
d.Title = '進捗報告テキストのリアルタイム表示';
d.Message = '進捗具合を文章で報告する方法を探しています';
d.Cancelable = "on"; % キャンセルボタン表示
d.Indeterminate = "on"; % 不確定型進行状況
pause(5);
d.Indeterminate = "off";
d.Value = .25; d.Message = 'PartA......'; pause(1);
d.Value = .50; d.Message = 'PartB......'; pause(1);
d.Value = .75; d.Message = 'PartC......'; pause(1);
d.Value = 1; d.Message = 'uiprogressdlg関数!'; pause(3);
close(d); close(fig);
Atsushi Ueno
Atsushi Ueno am 20 Okt. 2022
% > App Designer 内および関数 uifigure で作成されたアプリ内では、
% > waitbar よりも uiprogressdlg の方が、追加のカスタマイズ オプションを使用できるため推奨されます。
とありますが、逆にfigureの不要なプログラムの実行においてuiprogressdlg関数を使おうとすると、必要も無いのにuifigureを表示しなければなりません。

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Tags

Produkte


Version

R2021b

Community Treasure Hunt

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

Start Hunting!