0

我正在尝试在 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{:});
4

1 回答 1

1

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

看起来您只是忘记将参数传递bg函数内的函数句柄sum_res(假设 b 确实是您想要的参数)

sum_res = @(b)(y-g(b))'*(y-g(b)); 
于 2013-04-22T03:58:37.953 回答