11

いくつかの理由(デバッグ、さまざまな入力でのテストなど)で数回実行する必要があるMatlabで記述されたプログラムがいくつかあります。

しかし、プログラムとそのさまざまな機能によってプロットされるグラフはたくさんあり、プログラムを実行するたびにすべてのグラフが表示されるのを待たなければならず、これは非常に面倒で時間がかかります(特にあなたがいるとき)小さなラップトップでの作業)。プログラムを実行した後、。で閉じますclose all

だから私の質問は:

Matlabのすべてのプロット/図/グラフを無効にする方法はありますか?オプションで、またはのような特定のコードを実行して、図が表示されていないことを確認しますdisable plotenable plot

コードを参照してプロット部分にコメントするだけでよいことは知っていますが、コメントを外すことを忘れたくありません。

4

3 に答える 3

14

2つのコマンドの組み合わせを試してください。

set(gcf,'Visible','off')              % turns current figure "off"
set(0,'DefaultFigureVisible','off');  % all subsequent figures "off"

2つ目は、プログラムの最初の方に置くと、うまくいくかもしれません。もちろん、それでもプロットを作成しているため、計算時間やRAMの問題には望ましくない場合があります。

これは、可能な場合にMatlabを避ける典型的な理由です。それは悪いプログラミング設計を助長します。この問題を正しく解決するには、プログラムの最高レベルで「スイッチを切り替える」ことができるものを作成し、プロットを表示するかどうかを制御する必要があります。おそらく、表示/非表示オプションのグラデーションが含まれているため、実行している診断に応じて、表示/非表示のさまざまなタイプのプロットを選択できます。

理想的には、この「スイッチを切り替える」作成を、他のオブジェクトの可視性とプロット機能にアクセスできるクラスにする必要があります。しかし、Matlabではインタラクティブなオブジェクト指向が非常に面倒であるため、そのようなソリューションを開発する価値がないことが多く、ほとんどの人はプロジェクトの最初からこの設計の側面について考えていません。

Matlabは、「isPlotVisible」などのフラグ変数を作成し、そのようなフラグを常に受け​​入れる関数を作成することで、これを解決するように誰かに勧めます。私はこれが悪いデザインであることに同意します。

于 2012-04-12T18:43:18.977 に答える
3

次のコマンドラインからmatlabを実行できます。

matlab -nojvm

しかし、その後、GUIはまったく取得されません。または、ファイル'plot.m'を作成することもできます。

function h = plot(varargin)
  h = [];
end

これは何もしません。これが作業ディレクトリ(またはパスの最上部近く)にある場合、plotは「実際の」プロットの代わりに関数を呼び出します。呼び出す他のグラフ関数からも同じことを行う必要があります。

「プロットをオフにする」ことを私が知っている最も近い方法は、パスに追加してプロットを無効にし、削除して有効にすることができる関数のフォルダーです。

于 2012-04-12T18:43:16.400 に答える
1

前の方法は問題ありませんが、簡単で良い習慣はを使用すること"on/off parameter"です。したがって、基本的に、コードの先頭に次のようなものを追加できます。

DisplayFigure = 1; %1 = display, 0 = no display

その後、"if DisplayFigure == 1 ... end"すべてのプロット関連コマンドを追加します。コマンドはifステートメント内にある必要があります(上記の...)。したがって、プロットを計算することすらできず、多くの時間とメモリを節約できます。図をプロットするかどうかを決めるには、変数「DisplayFigure」の値を変更する必要があります。

于 2015-02-05T01:33:18.983 に答える