在 MATLAB 的元胞数组中添加函数处理程序

Adding function handlers in cell array in MATLAB

我有一堆匿名函数存储在一个元胞数组中,如下所示:

F = {@(x) x + 1, @(x) x * x}

我想创建一个新的匿名函数来将它们全部相加并对给定输入 x 的结果进行平均。 F 可以有任意数量的函数句柄,并在 运行 时生成。如果 F 是已知的,那么它就是 f = @(x) (F{1}(x) + F{2}(x)) / length(F)。但是我不知道如何将 F 的所有元素附加到这个新的匿名函数上(大概是在一个循环中?)我该怎么做?

使用 cellfun 定义一个函数,仅使用一行计算 F 中的每个函数 f。任意Fx的匿名函数句柄如下:

F = {@(x) x + 1, @(x) x * x};
%// Build anonymous function that evaluates each function, sums, 
%// divides by length of F
new_F = @(x,F)sum(cellfun(@(f)f(x), F)) / length(F);

然后,要进行评估,只需调用:

x = 2; %// data to apply fcns on
result = new_F(x, F)