传递函数句柄

时间:2013-04-22 03:15:47

标签: matlab

我正在尝试在matlab中解决以下问题。我有一个由5个参数和4个变量定义的函数作为数据输入。我这样定义:

g = @(b)((b(4)*(b(2)*x(:,1) + b(3)*x(:,2) + 1)) + b(5)*x(:,3)*x(:,4).^b(1));

然后我想找到最小化此函数中错误的参数值,我将其定义为:

sum_res = @(b)(y-g)'*(y-g); [beta_opt,fval] = fminsearch(sum_res,[1,1]);

我收到以下错误消息:

Undefined function 'minus' for input arguments of type 'function_handle'.

Error in @(b)(y-g)'*(y-g)


Error in fminsearch (line 191)
fv(:,1) = funfcn(x,varargin{:});

1 个答案:

答案 0 :(得分:1)

错误消息是正确的; g是函数句柄,而不是值类型。因此,当您在y-g函数中执行减法sum_res时,将没有减法运算符将接受函数句柄作为操作数(如何减去函数句柄?)

您似乎忘记将参数b传递给g函数内的sum_res函数句柄(假设b确实是您想要的参数)

sum_res = @(b)(y-g(b))'*(y-g(b));