2017-08-09 17 views
3

私は約10個の入力引数を持つ関数を持っています。データ処理後、これらの引数は空の配列/ベクトルになります。この場合、各出力を0に設定して、関数から終了(戻り)したいと考えています。Matlabで入力引数が空でないことを確認してください

関数のすべての入力が空でないことを確認するにはどうすればよいですか?それぞれを入力する必要はありません。私は何か好きです。

function [outputs1and2] = myfunct(many_arguments) 
if isempty(any_input_argument) 
    out1 = 0; 
    out2 = 0; 
    return 
end 
out1 = some_math; 
out2 = more_math; 
end 

答えて

3

あなたは簡単にcellfunを使用して確認することができ、最初にcell arrayにご入力引数のすべてを保持するためにvararginの使用を作ることができる:

function [out1, out2] = myfunct(varargin) 
    if any(cellfun(@isempty, varargin)) 
    out1 = 0; 
    out2 = 0; 
    return 
    end 
    % ...further processing 
end 

そして、あなたがのために入力引数を使用する必要がある場合その後の処理、あなただけのように同じようvararginからそれを抽出することができます。

in1 = varargin{1}; % Get first input argument 

また、Mがあなたが探しているものよりも関与している場合は、関数への入力引数を検証するためにinputParser objectsをチェックアウトすることもできます。

+0

これは可能ですが、後で各入力に対してvarargin {}を行うと、同じ量の行になります。おそらく、それぞれのためにisemptyを指定するだけです。ご回答有難うございます。 – Leo

+0

@Leo: 'varargin 'のすべての値を新しい変数に入れる必要はありません。たとえば、 'in1'を使うたびに、' varargin {1} 'のように使うことができます。 – gnovice

関連する問題