MATLAB:求和函数句柄

时间:2018-05-20 20:04:15

标签: matlab math sum function-handle

我正在尝试自动创建一个函数句柄,它是函数句柄的总和。当我尝试手动执行此操作时,它可以工作:

f1 = @(x) x(1);  
f2 = @(x) x(2);   
f3 = @(x) x(3);  
f = @(x) f1(x)+f2(x)+f3(x);  

但是当我尝试自动执行此操作时(使用for循环):

aux = {f1,f2,f3};  
f = @(x) 0;
for i=1:3    
   f = @(x) f(x) + cell2mat(aux(i));
end

我收到以下错误:

  

未定义的运算符'+'表示'function_handle'类型的输入参数。

我的目标是将此函数句柄与fmincon函数一起使用。

所以替代解决方案也会有所帮助。

1 个答案:

答案 0 :(得分:0)

在第一种情况下,您要添加函数调用的结果,这样可以正常工作。在第二种情况下,您尝试添加未实现的函数句柄。

解决方法是使用cellfun评估您的功能,然后将结果添加到一起:

f = @(x)sum(cellfun(@(c)feval(c,x),aux));

以上假设您的函数都返回标量数字。如果您的实际应用程序不是这种情况,那么您需要适当修改cellfun的使用。