我尝试在MatLab中运行此函数:
function llik = log_likelihood(p)
global d;
N = length(d);
tau = fzero(@(t) (t - (t^2 * p + 1 - p) / (2 * (t * p + 1 - p))), [0,1]);
loglik = 0;
for i = 1 : N
loglik = loglik + log(isnan(d(i)) * (1 - p * (1 - tau) + ~isnan(d(i))* p * (1 - tau)));
end
llik = loglik / N;
end
这里,p是一个标量。MatLab给了我一个错误警告:
Error using fzero>localFirstFcnEval
FZERO cannot continue because user-supplied function_handle ==>
@(t)(t-(t^2*p+1-p)/(2*(t*p+1-p))) failed with the error below.
Unrecognized function or variable 'p'.
我很困惑,因为p应该是函数的自变量。它怎么可能不受欢迎呢?谢谢你的帮助!
1条答案
按热度按时间zbdgwd5y1#
如果我在函数中赋值d,在其中定义变量
d
,如果它是全局变量,则必须定义为:这是我的结果: