Effacer les filtres
Effacer les filtres

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

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

Réponse acceptée

Hernia Baby
Hernia Baby le 20 Oct 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 commentaires
Atsushi Ueno
Atsushi Ueno le 20 Oct 2022
Déplacé(e) : Atsushi Ueno le 20 Oct 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 le 20 Oct 2022
% > App Designer 内および関数 uifigure で作成されたアプリ内では、
% > waitbar よりも uiprogressdlg の方が、追加のカスタマイズ オプションを使用できるため推奨されます。
とありますが、逆にfigureの不要なプログラムの実行においてuiprogressdlg関数を使おうとすると、必要も無いのにuifigureを表示しなければなりません。

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur GUIDE アプリの移行 dans Help Center et File Exchange

Tags

Produits


Version

R2021b

Community Treasure Hunt

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

Start Hunting!