在最大似然估计的上下文中使用函数 fminunc 时,我遇到错误 . 我担心它非常直接,但我对MATLAB的经验非常有限 .
函数“normal”包含对数似然函数 . 我试图估计期望和标准 . 给定存储在变量x中的观测值的正态分布的偏差 .
function f = normal(X, theta)
mean = theta(1);
sigma = theta(2);
z = (X-mean)./sigma;
f = -(sum(-log(sigma) -(1/2).*z.^2 ));
我基本上执行以下代码:
theta = [1,1]
f = @(theta)normal(x, theta)
[est, fval, exitflag, output, grad, hessian] = fminunc('normal', x, theta)
错误如下:
警告:结构字段分配会覆盖类“double”的值 . 有关详细信息,请参阅MATLAB R14SP2发行说明,将非结构变量指定为结构显示警告 . 在createOptionFeedback at 34 in prepareOptionsForSolver at 31 in fminunc at 157警告:Struct字段赋值将覆盖类“double”的值 . 有关详细信息,请参阅MATLAB R14SP2发行说明,将非结构变量指定为结构显示警告 . 在fminunc at 203错误使用feval未定义函数'normal'表示'double'类型的输入参数 . fminunc中的错误(第254行)f = feval(funfcn {3},x,varargin {:});引起:初始用户提供的目标函数评估失败 . FMINUNC无法继续 .
不幸的是,手册没有帮助我修复代码 . 调用
[est, fval, exitflag, output, grad, hessian] = fminunc(f, x, theta)
也没有帮助 . 我究竟做错了什么?
先感谢您!