2013-01-07 16 views
5

私はtextscanを使ってデータを変数に読み込む短い関数を持っています。関数出力を抑制する

>>function('function.txt') 

    ans = 

     {10x1 cell} {10x1 cell} {10x1 cell} [10x1 double] 

が離れて、​​私は関数を呼び出すために使用する行の末尾にセミコロンを追加することから、これを抑制するためにどのような方法があります:

私の問題は、私はいつもこれを得るということですか?私は、セミコロンを付け加えなくてもそれを抑制できるようにしたいと思います。私はこの機能を実行するときに何も表示したくないので、ファイルをロードしたいだけです。

+0

おっと、誤を質問を読んでください。私の答えを削除しています。 –

+4

今質問を正しく読んでください:-)あなたが望むのは 'evalc'です(私は思う)。 [suppress-output](http://stackoverflow.com/questions/9518146/suppress-output)と[suppressing-a-functions-command-window-output](http://stackoverflow.com/questions/3029636/)を参照してください。この質問のほぼ重複するものについては(私はこれを可能な重複としてフラグを立てています)。 –

答えて

5

出力を抑制するには、関数の出力引数(または戻り値)を削除します。 OR あなたは>>fooを入力して、何を取得Support Variable Number of Outputs

function varargout = foo 
    nOutputs = nargout; 
    varargout = cell(1,nOutputs); 
    for k = 1:nOutputs; 
     varargout{k} = k; 
    end 
end 

を参照してください、Variable Number of Outputsを使用してみてください。 >>a=fooと入力して>>a=1を取得します。 >>[a,b]=fooと入力して>>a=1 >>b=2と入力します。

出力引数を指定しないことで、出力を抑制することができます。

1

diary機能を試すことができます。これは、コマンドプロンプトからのすべての入力と出力を選択したファイルにリダイレクトします。特定の機能中にのみオンにすると、入力はキャプチャされません。 私は日記のオン/オフ状態がグローバルなmatlabであるので、ちょっとした不思議な解決策であると認めますが、あなたのケースでは大丈夫かもしれません。

ここでそれについて詳しく読む: Diary matlab help

4

を出力してプリントアウトを避けるための最も簡単な方法は、何も出力引数が要求されなかった場合は、最初の出力引数を割り当てないことです。

function [aOut,b,c] = doSomething 

%# create a,b,c normally 
a = 1; 
b = 4; 
c = 3; 

%# only assign aOut if any output is requested 
if nargout > 0 
    aOut = a; 
end 
関連する問題