【发布时间】:2011-01-16 09:37:56
【问题描述】:
嗨
我正在尝试对两个函数句柄求和,但它不起作用。
例如:
y1=@(x)(x*x);
y2=@(x)(x*x+3*x);
y3=y1+y2
我收到的错误是“???未定义的函数或方法 'plus' 用于类型 'function_handle' 的输入参数。”
这只是一个小例子,实际上我实际上需要迭代求和大约 500 个相互依赖的函数。
编辑
Clement J. 的解决方案确实有效,但我无法将其概括为一个循环并遇到问题。我有函数s=@(x,y,z)((1-exp(-x*y)-z)*exp(-x*y)); 并且我有一个包含 536 个数据点的向量 v 和另一个也包含 536 个数据点的向量 w。我的目标是总结 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
【问题讨论】:
-
我真的对Matlab一无所知,但你试过写
y3=@(x)( y1(x) + y2(x) )吗? -
非递归解决方案:
mySum = @(y) sum( s(v,y,z) );变量v和z在函数定义范围内,函数sum由 MATLAB mathworks.com/help/techdoc/ref/sum.html 定义 -
如果您发现自己需要像这样对函数句柄求和,可能有更好的处理方式。