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