2

mファイルのプロット出力を回避する機能はありますか?

つまり、ファイルの先頭に関数 (clc など) を配置すると、すべてのプロット関数がブロックされます。

4

4 に答える 4

1

組み込みのプロット関数を独自のものでオーバーロードできます (関数内または同じディレクトリにネストされています)。

function myfun(a,b)
    plotting = false;
    plot(a,b);
    plot(b,a);

    function varargout = plot(varargin)
        if plotting
            [varargout{1:nargout}] = builtin('plot',varargin{:});
        end
    end
end

コースmyfunを変更しない限り、を呼び出しても何も起こりません。plotting=false

組み込み関数のオーバーロードに関する追加情報: http://www.mathworks.nl/support/solutions/en/data/1-18T0R/index.html?product=ML&solution=1-18T0R

于 2012-10-29T09:44:13.057 に答える
1

これを行う単一のコマンドについては知りませんが、コードを少し追加するだけで実現できます。

% Declare a variable for skipping at the top of your .m file
skip = 1; %example, 1 = skip, 0 = plot

% do things....

% Then nest your plot commands
if (skip == 0) % wants to plot in this case
  % Whatever plot code in here
  plot(x,y);
end

あなたが要求したようなきれいな単一の機能ではないことはわかっていますが、それでうまくいくはずです。それが役立つことを願っています!:)

また、必ずしも独自の .m ファイルで作業していない場合、またはスクリプトが非常に長い場合、これは実用的ではない可能性があることも理解しています。

于 2012-10-28T16:56:48.990 に答える
1

以下を使用して、すべてのmatlab プロットを非表示にすることができます。

set(0, 'DefaultFigureVisible', 'off');

に変更offするとon、プロセスが逆になります (これにより、すべてのプロットがオフになるため、おそらくこれを行う必要があります!)

その行を m ファイルの先頭に追加してから、

close all;
set(0, 'DefaultFigureVisible', 'on');

最後まで。

于 2012-10-29T11:10:27.697 に答える
0

プロットの後に書くこともできclose allます。それらはプロットされますが、すぐに閉じられます。きれいではありませんが、機能します。

于 2012-10-29T07:36:56.230 に答える