2017-03-13 4 views
2

私は1つだけ6ベクトル変数を引数としてとる関数vector_functionを持っています。私は引数として1行6列ベクトルの特定のメンバーを指定し、残りの部分にデフォルト値を割り当てるvector_functionに基づいて無名関数を定義したいと思います。私は、入力引数として6ベクトル変数によって1の最初の3人のメンバーを使用してanon_funを作成したい場合ベクトル引数を取り、引数としてベクトルメンバーの任意のサブセットを持つ新しい無名関数を定義する

例えば、私は書くことができます:

% Define default variable values. 
var_def = [1,2,3,4,5,6]; 

% Set which variables to use as arguments. 
var_flag = [true,true,true,false,false,false]; 

% Define anonymous function that takes 
anon_fun = @(var)... 
vector_function([var(1),var(2),var(3),var_def(4),var_def(5),var_def(6)]); 

を2^6すべてを処理する方法はあります= var_flagの可能な64の置換?私はvector_functionが入力を取る方法を変更することができますが、それはかなりの記録を必要とします。

+0

だから、 'var_flag'が入力され、' var_def'が静的ですか? – beaker

+0

はい、 'var_def'は変更されません。 'var_flag'のメンバーだけが変更されます。 –

+0

なぜ、 'var_def'と' var_flag'を取ってそれに基づいて処理する関数がないのですか? 64の匿名機能が特に必要ですか? – mpaskov

答えて

4

あなたはanon_funのために次の定義を使用することができます。

anon_fun = @(var) vector_function(var .* var_flag + var_def .* ~var_flag); 
+0

ニース、それはうまくいくでしょう。 :) – beaker

関連する問題