You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

23 lines
492 B
Matlab

function [mu,var]=decode(z,s,squared,wrap)
if nargin>2 && squared
z=z.^2;
end
if nargin<4 || isempty(wrap)
wrap=0;
end
if wrap %input space wraps around
a=s(end)-s(1)+s(2)-s(1);
f=360/a;
mu=180/pi*phase(sum(z.*exp(i*s.*f*pi/180))./sum(z))./f;
mu=mod(mu,a);
var=sum(z.*min([abs(mu-s);abs(mu-(s+a));abs(mu-(s-a))]).^2)./sum(z);
else %no wrap-around
mu=sum(z.*s)./sum(z);
var=sum(z.*(mu-s).^2)./sum(z);
end
%params=fit_1dgaussians(s,z);
%mu=params(1,2);
%var=params(1,3).^2;