我有一堆匿名函数存储在单元格数组中,如下所示:
F = {@(x) x + 1, @(x) x * x}
我想创建一个新的匿名函数来将它们全部添加起来并在给定输入x
的情况下平均结果。 F
可以具有任意数量的函数句柄,并在运行时生成。如果知道F
,那么它只是f = @(x) (F{1}(x) + F{2}(x)) / length(F)
。但我不知道如何将F
的所有元素附加到这个新的匿名函数上(大概是在循环中?)我该怎么做?
答案 0 :(得分:3)
使用cellfun
定义一个函数,该函数仅使用一行来评估f
中的每个函数F
。任意F
和x
的匿名函数句柄如下:
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)