使用向量参数获取函数并使用向量成员的任意子集作为参数定义新的匿名函数

时间:2017-03-13 20:50:05

标签: matlab anonymous-function

我有一个函数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输入的方式,但这需要大量重新编码。

1 个答案:

答案 0 :(得分:4)

您可以对anon_fun使用以下定义:

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