2017-04-13 31 views
0

Matlabで多数のネストされた関数で構成されるコードを使用しています。これらの関数の多くはprogressbarsです。 Matlabのコマンドや無効化する可能性がありますか?呼び出された行をすべて見つけてコメント/削除しなくても、progressbarsが表示されますか?進捗バーを無効にするMatlab

+0

あなたはこの話をしていますか? https://nl.mathworks.com/help/matlab/ref/waitbar.html またはカスタムテキストベースのものはありますか? – Lanting

+0

関数は 'progressbars'を表示している簡単なコードで説明できますか? – Arpssss

+0

あなたは 'progressbar'ユーティリティ[File Exchange](https://uk.mathworks.com/matlabcentral/fileexchange/6922-progressbar)について話していますか? – Wolfie

答えて

2

あなたのコメントから、私はwaitbarを呼び出す多くの機能を持っていることを意味します。

あなた自身のwaitbar.mで 'waitbar'関数をオーバーロードすると、検索パスの上位になることがあります。これは通常は良いアイデアではありませんし、将来(またはあなたのコードを使用する他の人が)ウェイトバーを使いたいときに問題を引き起こすかもしれませんが、それは表示されません。

もうそれを無効にする(私の観点から好ましい)の方法は、あなたが/ウエイトバーをオフに切り替えることができ、独自の中間関数を作成することです。これに

function h = mywaitbar (varargin) 
    % preallocate output 
    h = []; 
    % use an internal persistent variable 
    persistent active 
    % by default set to true 
    if isempty (active); active = true; end 
    % Check to see if its a control call 
    if nargin == 1 && ischar (varargin{1}) 
    % is it a call to disable it? 
    if strcmp (varargin{1}, '**disable**') 
     active = false; 
    else 
     active = true; 
    end 
    return 
    end 
    if active 
    h = waitbar (varargin{:}); 
    end 
end  

欠点は、あなたが見つける必要があるということですすべてのwaitbarコマンドを新しい関数 'waitbar'に置き換えますが、これは1回限りのアクションです。

はその後でウエイトバーするために、すべての将来の呼び出しを無効にします。

mywaitbar ('**disable**') 

はあなたのコードを実行し、何のウエイトバーは表示されません。一貫変数を使用すると、Matlabを再起動するまで(またはclear allを呼び出すまで)ステータスが保持されます。 「すべてクリア」を停止するには、この機能をリセットするにはmlockを使用します。それは次のコードを使用してテストするには

mywaitbar ('**enable**') 

:ウエイトバーを再度有効にするには

for ii=1:10 
    h = mywaitbar (ii); 
    fprintf ('test with waitbar %i\n', ii); 
end 

は今ウエイトバー機能を無効にします。

mywaitbar ('**disable**') 
for ii=1:10 
    h = mywaitbar (ii); 
    fprintf ('test with waitbar disabled %i\n', ii); 
end 

あなたは、コードがわかります上記はwaitbarが表示されずに実行されます。

+0

ありがとうございました。私が正しく理解していれば、他の人を押さえるためにコード実行前にウェイトバーを開くことを提案しています。どうやってやるの?このコマンドは、すべてのネストされたウェイトバーを開始します。total = r.GetResult( 'a')。ウェイトバーを抑制するには、このコマンドの前に何を書かなければならないのですか?ありがとうございました – David

+0

いいえ、私が提案しているものではなく、関数を保存して、それがどのように動作するかを調べるために追加したテストを実行します。 – matlabgui

+0

私の問題は、プログレスバーが初期化されているコードの各部分を見つけることができないことです。私が必要とするのは、他のものを抑制するためにコード実行の前にウェイトバーを開くことです。あなたはそれをする方法を知っていますか? – David