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

3

我有一组匿名函数存储在一个单元数组中,格式如下:

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

我想创建一个新的匿名函数,以给定输入x为参数将它们全部加起来并计算平均值。函数F可以具有任意数量的函数句柄,并在运行时生成。如果已知F,则简单地是f = @(x) (F{1}(x) + F{2}(x)) / length(F)。但我不知道如何将F中的所有元素附加到这个新的匿名函数中(可能需要循环?)我该怎么做?

2
请查看cellfun - Adriaan
1个回答

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)

哇!不知道这是有效的语法!Matlab 的函数式编程很强大。 - Flying_Banana

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接