This repository has been archived on 2021-05-17. You can view files and clone it, but cannot push or open issues or pull requests.
scientificComputing/projects/project_populationvector/solution/maxlikelihoodangle.m

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