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