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

时间:2015-11-26 16:47:06

标签: matlab anonymous-function cell-array

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

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

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

1 个答案:

答案 0 :(得分:3)

使用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)