function FF=samplesompi(x,m)

% samplesompi.m

% Save as 'samplesompi.m' on the same directory with 'testsompi.m'.

% input

% x=[x1 x2 ... xN] :Data vector; line vector

% m : AR order; scalar

% output

% FF=[f g A phai]

% f: frequency vector [f1 f2 .. f2m]'

% g: growing rate [g1 g2 .. g2m]'

% A: initial amplitude [A1 A2 .. A2m]'

% phai: initial phase [phai1 phai2 .. phai2m]'

 

N=size(x);

N=(N(1,2)-1)/2;

 

Y=x(2*m+1:2*N+1);

for j=2:2*m+1

Y=[Y;x(2*m+2-j:2*N+2-j)];

end

 

P=Y*Y'/(2*N-2*m+1);

 

% solving normal equation (lambda equation)

 

[V,D]=eig(P);

R=diag(D);

 

[lambda,I]=min(R);

 

a=V(:,I);

 

% to obtain namiso z

 

z=roots(a');

 

% f-g plot

 

g=log(abs(z));

f=angle(z)/2/pi;

[f g];

 

 

% to obtain initial amplitude and initial phase

 

zz=z';

Z=z';

for i=2:2*N+1

zz=zz.*z';

Z=[Z;zz];

end

 

c=pinv(Z)*x';

 

A=abs(c);

phai=angle(c);

u=Z*c;

 

FF=[f g A phai];

% drawing the graphs

figure(1)

plot(f,g,'+')

xlabel('Frequency /Hz');

ylabel('Gradient /sec-1');

grid on

 

figure(2)

px=[f f]'; py=[g g]';

pz=[zeros(size(A)) A]';

plot3(px,py,pz,'r')

grid on

xlabel('f /Hz'); ylabel('g /sec-1')

zlabel('Initial Amplitude')

% to caluculate model time series

 

%u=Z*c;

figure(3)

t=1:2*N+1;

plot(t,x,'b-',t,real(u),'r:')

grid on

xlabel('Time /sec');

ylabel('Amplitude');