以向量参数为函数,并以向量成员的任意子集作为参数定义新的匿名函数
taking function with vector argument and defining new anonymous function with arbitrary subset of vector members as arguments
我有一个函数 vector_function
,它将一个 1 x 6 向量变量作为其唯一参数。我想定义一个基于 vector_function
的匿名函数 anon_fun
,它将 1 x 6 向量的某些成员指定为参数,并将默认值分配给其余部分。
例如,如果我想使用 1 x 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
接受输入的方式,但这需要大量的重新编码。
您可以为 anon_fun
使用以下定义:
anon_fun = @(var) vector_function(var .* var_flag + var_def .* ~var_flag);
我有一个函数 vector_function
,它将一个 1 x 6 向量变量作为其唯一参数。我想定义一个基于 vector_function
的匿名函数 anon_fun
,它将 1 x 6 向量的某些成员指定为参数,并将默认值分配给其余部分。
例如,如果我想使用 1 x 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
接受输入的方式,但这需要大量的重新编码。
您可以为 anon_fun
使用以下定义:
anon_fun = @(var) vector_function(var .* var_flag + var_def .* ~var_flag);