【问题标题】:Adding function handlers in cell array in MATLAB在 MATLAB 的元胞数组中添加函数处理程序
【发布时间】:2015-11-26 16:47:05
【问题描述】:

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

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

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

【问题讨论】:

标签: matlab anonymous-function cell-array


【解决方案1】:

使用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 的函数式编程很强大。
猜你喜欢
  • 1970-01-01
  • 2011-06-05
  • 2011-12-20
  • 1970-01-01
  • 1970-01-01
  • 2013-08-09
  • 2018-04-26
  • 2018-11-16
  • 1970-01-01
相关资源
最近更新 更多