Octave中匿名函数的总和

Sum of anonymous functions in Octave

我试图通过将其添加到自身来总结一个匿名的 2 变量函数(类似于 C 中的 += 运算符或 Java)。示例代码如下:

f = @(x, y) 0;
for iter = 1: 10
    a = @(x) x^2;
    b = @(y) cos(y);
    c = @(x, y) a(x) + b(y);
    f = @(x, y) f(x, y) + c(x, y);
end

这样可以吗,还是语法不好?有没有更有效或更合理的方法来做到这一点?提前 !

在其他匿名函数之上构建匿名函数是很常见的。看起来 f 是其他匿名函数总和的结果,所以 f 应该很好用,一旦你在循环中到达该语句就可以使用。但是,您编写的代码在创建匿名函数后不会使用任何生成的匿名函数。我还建议使用逐元素操作来确保可以包含多个输入(例如矩阵/向量)。

因此:

f = @(x, y) 0;
for iter = 1: 10
    a = @(x) x.^2; % Change
    b = @(y) cos(y);
    c = @(x, y) a(x) + b(y);
    f = @(x, y) f(x, y) + c(x, y);
end

这是一个可重现的小例子,展示了语句链在一次迭代中的样子,然后在最后使用生成的最终函数 f

>> f = @(x,y) 0
f =

@(x, y) 0

>> a = @(x) x.^2
a =

@(x) x .^ 2

>> b = @(y) cos(y)
b =

@(y) cos (y)

>> c = @(x, y) a(x) + b(y)
c =

@(x, y) a (x) + b (y)

>> f = @(x, y) f(x, y) + c(x, y)
f =

@(x, y) f (x, y) + c (x, y)

>> f(0.5, 7)
ans =  1.0039
>>