24 lines
873 B
Matlab
24 lines
873 B
Matlab
function angle = maxlikelihoodangle(phases, gains, rates)
|
|
% maximum likelihood estimation of orientation
|
|
cosine = @(g,p,xdata)0.5*g.*(1.0+cos(2.0*pi*(xdata-p)/180.0));
|
|
angels = 0:1.0:180.0;
|
|
loglikelihoods = zeros(length(phases), length(angels));
|
|
for i=1:length(phases)
|
|
r = cosine(gains(i), phases(i), angels);
|
|
%%loglikelihoods(i, :) = exp(-0.5*((rates(i)-r)./(0.25*r)).^2.0)./sqrt(2.0*pi*(0.25*r).^2.0);
|
|
%loglikelihoods(i, :) = log(exp(-0.5*((rates(i)-r)./(0.25*r)).^2.0)./sqrt(2.0*pi*(0.25*r).^2.0));
|
|
loglikelihoods(i, :) = -0.5*((rates(i)-r)./(0.25*r)).^2.0 - 0.5*log(2.0*pi*(0.25*r).^2.0);
|
|
end
|
|
loglikelihood = sum(loglikelihoods, 1);
|
|
[m i] = max(loglikelihood);
|
|
angle = angels(i);
|
|
% plot(angels, loglikelihood);
|
|
% hold on;
|
|
% plot([angle angle], [-500 0], 'k')
|
|
% hold off;
|
|
% xlabel('angle');
|
|
% ylabel('likelihood');
|
|
% ylim([-500, 0]);
|
|
% pause( 0.2 );
|
|
end
|