3

重複の可能性:
Matlabのデフォルトの引数

渡されるパラメータが約7つある関数があります。それらのうち3つは必須であり、残りの4つはオプションのパラメーターです。最初の3つと最後のパラメーターのみを渡したい。どうすればよいですか?

関数が次のようになっているとしましょう:function [...] = fun(a、b、c、d、e、f、g)

a、b、c-必要な入力。

d、e、f、g-オプションの入力。

funと呼び、a、b、c、gの値を渡したい。

Rでは、これを次のように非常に適切に指定できます。fun(a = 1、b = 4、c = 5、g = 0);

matlabの同等の構文は何ですか?

4

2 に答える 2

5

残念ながら、これを行う方法はありません。渡したくないパラメーターには空の値を明示的に渡す必要があります。また、関数でその条件をチェックして、パラメーターが渡されたかどうか、およびパラメーターが空かどうかを確認する必要があります。このようなもの:

function fun(a, b, c, d, e, f, g)
    if nargin<3
        error('too few parameters');
    end
    if nargin<4 || isempty(d)
        d = default_value;
    end
    % and so on...
end

% call
fun(a, b, c, [], [], g);

最終的には、オプションのパラメーターを1つの構造にまとめて、そのフィールドを確認する方が簡単な場合があります。

function fun(a, b, c, opt)
    if nargin<3
        error('too few parameters');
    end
    if nargin>3
        if ~isfield(opt, 'd')
            opt.d = default_value;
        end
    end
end

% call
opt.g = g;
fun(a, b, c, opt);

関数を呼び出す方が簡単で、空のパラメーターを指定する必要はありません。

于 2012-12-05T09:21:41.353 に答える
3

MATLABでこれを行う慣用的な方法は、オプションの引数にパラメーターと値のペアを使用するか、オプションのフィールドが指定された構造体を使用することです。これを行う1つの方法は、inputparserヘルパークラスを使用することです。

于 2012-12-05T11:35:32.047 に答える