MATLAB-求参数最大似然估计的误差

MATLAB-求参数最大似然估计的误差,matlab,parameters,distribution,mle,log-likelihood,Matlab,Parameters,Distribution,Mle,Log Likelihood,以下MATLAB代码由Dattatreya等人在《角度统计》一书中使用,以找到某一概率分布的最大似然估计 function [fun]=w_eiw_fminmle(X) th=[8 9 13 13 14 18 22 27 30 34383840 44 45 47 48 48 48 48 50 53 56 57 58 58 61 63 64 64 64 65 65 68 70 73 78 78 78 83 83 88 88 88 90 92 92 93 95 96 98 100 103 1

以下MATLAB代码由Dattatreya等人在《角度统计》一书中使用,以找到某一概率分布的最大似然估计

function [fun]=w_eiw_fminmle(X)
    th=[8 9 13 13 14 18 22 27 30 34383840 44 45 47 48 48 48 48 50 53 56 57 58 58 61 63 64 64 64 65 65 68 70 73 78 78 78 83 83 88 88 88 90 92 92 93 95 96 98 100 103 106 113 118 138 153 153 155 204 215 223 226 237 238 243 244 250 251 257 268 285 319 343 350];
    th=th.*pi./180;
    th=sort(th); 
    n=76;
    c=X(1) 
    lambda=X(2)
    m=5;

    g=0;
    for k=0:m
        g=g+((lambda.*c).*((th+2*k*pi)).^(-(c+1))).*(exp(-(th+2*k*pi).^(-c)).^lambda); 
    end

    fun=0; 
    for i=1:n
        fun=fun+log(g(i)); 
    end

    fun=-(fun); 

return

我试图在MATLAB中运行此代码,但收到一个错误,指出X未识别。如何修复此错误?

若要使用此函数并显示其输出,请尝试添加以下内容

your_input = [[1,2], [3,4]];
[output] = w_eiw_fminmle(your_input);
disp(output)
在代码的其余部分之前。这可能会解决您的错误,因为在您的代码中,您没有显示用于输入函数的内容。另外,第10行以
g=
开头,以
结尾,这是一个存在的
*
的第一部分。这将给您一个错误,请尝试将第10行和第11行合并为一行

g=g+((lambda.*c).*((th+2*k*pi)).^(-(c+1))).*(exp(-(th+2*k*pi).^(-c)).^lambda);
在第8行中,您定义了
g=0
,然后在第9行中迭代
k
,在那里它被迭代地更改
g
仍然是一个标量。在后面的第12行中,使用
g(i)
,其中
i
从1变为76(
n=76
)。如您所见,
g
只有一个值,您试图获取其第76个元素的值,这将给您一个错误

如果这段代码如您所说取自一本书,我可以想象有两种可能的情况,最有可能是您键入函数时出错,或者这本书有一段无法运行的代码(书籍打字错误或糟糕的书籍)。我会仔细检查你的代码转录。祝你好运