我有一个函数vector_function
,它将1乘6的向量变量作为唯一的参数。我想基于anon_fun
定义一个匿名函数vector_function
,它将1乘6向量的某些成员指定为参数,并为其余成员分配默认值。
例如,如果我想使用1乘6矢量变量的前三个成员作为输入参数创建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)]);
有没有办法处理var_flag
的所有2 ^ 6 = 64种可能的排列?我可以改变vector_function
输入的方式,但这需要大量重新编码。
答案 0 :(得分:4)
您可以对anon_fun
使用以下定义:
anon_fun = @(var) vector_function(var .* var_flag + var_def .* ~var_flag);