0

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

以下に示すように、Matlabにはtest1とtest2の2つの関数があります。

function [C,D] = test1(A,B)

A = 50;
B = 20;

C = A + B;
D = A - B;

end

function test2

C = 1000;
D = 500;

[A,B] = test1(C,D);

display(A)
display(B)

end

ここで、関数test1でAとBのデフォルト値を設定しましたが、関数test2などの別の関数とは異なる値を関数test1に渡すこともできます。したがって、デフォルトでは、関数test1でAとBを50と20に設定しますが、関数test2を使用すると、それらを1000と500に置き換えて、同等のCとDの結果を取得できます(1000と500の場合、結果を取得します) CとDでそれぞれ1500と500)

これどうやってするの?どんな助けでも大歓迎です。ありがとう

4

2 に答える 2

5

vararginその目的のためにMatlabを使用できます。

function [C,D] = test1(varargin)

A = 50;
B = 20;
if nargin > 0
  A = varargin{1};
end
if nargin > 1
  B = varargin{2};
end

C = A + B;
D = A - B;

end
于 2013-01-15T12:42:17.803 に答える
1

これを行ういくつかの方法

入力の存在を確認します。

if(~exist('A'))
 A = default;
end

exist(A) ではなく、exist('A') を使用していることに注意してください。渡されなかったために A が存在しない場合は、エラーがスローされます。

あるいは

if(nargin < 2)
 B = default_b;
end
if (nargin == 0)
 A = default_a;
end

これらのメソッドはどちらもやや面倒です。オプションにしたい入力が多数ある場合は、matlab クラスの inputParser を使用できます。

doc inputParser

詳細については、ここでは説明しません。これは非常に包括的であるためです (単純なケースではやり過ぎかもしれません)。

于 2013-01-15T12:46:38.120 に答える