Octave

时间:2016-09-06 13:43:23

标签: octave

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

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

是否可以这样做或语法不好?有更有效或合理的方法吗?提前Ty!

1 个答案:

答案 0 :(得分:1)

拥有基于其他匿名函数构建的匿名函数是很常见的。看起来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
>>