function [sigr erg]=fitsinus_pony2(sig);
% fitsinus_pony2 fittet in das abgetastete Sinussignal 'sig'
% die Funktion amp*sin(wn*(0:n-1)+ph)+offs;
% amp, wn, ph und offs werden zurueckgeliefert
% Das geht jetzt auch mit sehr stark ueberabgetasteten Signalen
% und Signalen mit DC Anteil

% Detlef Amberg 05/2016 Detlef.Amberg@gmx.de 

% debug stuff
%clear
%n=3201;
%f=1.0123
%sig = 1998*sin(f*2*pi*(0:n-1)/n+0.1234);
%sig=sig+2048;
%davor =davor-mean(davor);

sig=sig(:).';

spd=fft(sig);
spd(1)=0;
[y,ind]=max(abs(spd(1:end/2)));
ind=ind-1;% Wieviele Wellen ?
nn=length(sig)/ind; % Abtastwerte/Welle
dd=round(nn/4); % Das ist der Abstand für 4 Werte/Welle

spd=1; % loeschen

n=length(sig);
s1=sig(1:(n-2*dd))+sig((1+2*dd):n);
s2=sig((1+dd):(n-dd));

%whos

% Regression s1 auf s2
MM= [s2.' ones(length(s1),1)];
coff=inv(MM'*MM)*MM'*s1.';
wn=acos(coff(1)/2)
wn=wn/dd;

%plot(s2,s1,'b.',s2,(MM*coff).','r.')
%plot(s2,s1,'b.',s2,s1,'r.')
Ma=[cos((0:n-1)*wn).' sin((0:n-1)*wn).' ones(n,1)];
coffa=inv(Ma'*Ma)*Ma'*sig.';

cc=coffa(2)+j*coffa(1);
amp=abs(cc);
ph=angle(cc);
offs=coffa(3);
%sig=5;

sigr=amp*sin(wn*(0:n-1)+ph)+offs;

erg=[amp wn ph offs];

%wn*n/2/pi-f
%plot(1:n,sig,1:n,sigr);
%plot(sig-sigr)
%plot(s1,s2,'.')
return

