function [embedm fnn1 fnn2]=fnn(y,maxm) % Usage: This function calculates corrected false nearest neighbour. % Inputs: % y is a vertical vector of time series. % maxm: maximum value of embedding dimension. % Output: % embedm: proper value for embedding dimension. % fnn1: First criteria of false nearest neighbors. % fnn2: second criteria of false nearest neighbors. % Copyright(c) Shapour Mohammadi, University of Tehran, 2009 % shmohammadi@gmail.com % Keywords: Embedding Dimension, Chaos Theory, Lyapunov Exponent, % False Nearest Neighbors. % Ref: % -Sprott, J. C. (2003). Chaos and Time Series Analysis. Oxford University % Press. %__________________________________________________________________________ y=y(:); RT=15; AT=2; sigmay=std(y); [nyr,nyc]=size(y); %Embedding matrix m=maxm; EM=lagmatrix(y,0:m-1); %EM after nan elimination. EEM=EM(1+(m-1):end,:); [rEEM cEEM]=size(EEM); embedm=[]; for k=1:cEEM fnn1=[]; fnn2=[]; D=dist(EEM(:,1:k)'); for i=1:rEEM-m-k d11 = min(D(i,1:i-1)); d12=min(D(i,i+1:end)); Rm=min([d11;d12]); l=find(D(i,1:end)== Rm); if Rm>0 if l+m+k-1RT); Ind2=find(fnn2>AT); if length(Ind1)/length(fnn1)<.1 && length(Ind2)/length(fnn1)<.1; embedm=k; break end end %_____________________________End__________________________________________