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
>>
我试图通过将其添加到自身来总结一个匿名的 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
>>