你好
我试图对两个函数句柄求和,但它不起作用。
例如:
y1=@(x)(x*x);
y2=@(x)(x*x+3*x);
y3=y1+y2
我收到的错误是“??? Undefined function or method 'plus' for input arguments of type 'function_handle'.”
这只是一个小例子,实际上我需要对大约 500 个相互依赖的函数进行迭代求和。
编辑
Clement J. 的解决方案确实有效,但我无法将其概括为一个循环并遇到了问题。我有函数 s=@(x,y,z)((1-exp(-x*y)-z)*exp(-x*y));
我有一个向量v 包含 536 个数据点,另一个向量 w 也包含 536 个数据点。我的目标是总结 s(v(i),y,w(i)) for i=1...536 从而在变量 y 中得到一个函数,它是 536 个函数的总和。我尝试这样做的语法是:
sum=@(y)(s(v(1),y,z2(1)));
for i=2:536
sum=@(y)(sum+s(v(i),y,z2(i)))
end
最佳答案
Fyodor Soikin 提出的解决方案有效。
>> y3=@(x)(y1(x) + y2(x))
y3 =
@(x) (y1 (x) + y2 (x))
如果你想在多个函数上执行它,你可以使用中间变量:
>> f1 = y1;
>> f2 = y2;
>> y3=@(x)(f1(x) + f2(x))
评论后编辑: 我不确定是否理解这个问题。你能像函数外那样定义向量 v 和 w 吗:
v = [5 4]; % your 536 data
w = [4 5];
y = 8;
s=@(y)((1-exp(-v*y)-w).*exp(-v*y))
s_sum = sum(s(y))
注意乘法中的点以按元素执行。
关于function - matlab中的求和函数句柄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4704664/