我正在使用von Mises分布
http://en.wikipedia.org/wiki/Von_Mises_distribution,它被认为是包裹法线的近似值(参见“循环统计S. Rao Jammalamadaka,A.SenGupta”中主题中的条件).不幸的是,我没有matlab来测试它,但我认为代码正在运行.因此,如果近似值有效,则可以执行以下操作:
主功能:
%你应该提供列向量theta 0-2pi
n=size(theta,1);
mu=0;
k=1;
theParameters=[mu;k];
options = optimset('TolFun',0.01);
outputPar = fminsearch('ml',theParameters,options,n,theta);
ML功能
function mLike=ml(theParameters,n,theta)
mu=theParameters(1,1);
k=theParameters(2,1);
theSum=0;
for i=1:n
theSum=theSum+k*cos(theta(i,1)-mu);
end
mLike=-n*log(2*pi*besselj(0,k)) + theSum;
mLike=-mLike;
如果你对k的积极性有问题,为了避免处理约束优化,做k = exp(kk)并估计kk.