From 50a886d49eed1afb95187c4ff44098448455eb4e Mon Sep 17 00:00:00 2001
From: marwan <>
Date: Wed, 6 Apr 2005 12:59:24 +0000
Subject: [PATCH] several small bug fixes which improves the precision

---
 crqa.m | 31 +++++++++++++++++++++----------
 1 file changed, 21 insertions(+), 10 deletions(-)

diff --git a/crqa.m b/crqa.m
index 88d72aa..a0992c8 100644
--- a/crqa.m
+++ b/crqa.m
@@ -135,6 +135,9 @@ function xout=crqa(varargin)
 % $Revision$
 %
 % $Log$
+% Revision 5.13  2005/04/01 12:19:51  marwan
+% bug in minimal length for diagonal and vertical lines fixed
+%
 % Revision 5.12  2005/03/16 13:16:12  marwan
 % bug in output fixed (same time scales for all sub-plots)
 %
@@ -934,25 +937,32 @@ catch
   if nogui~=2 & ishandle(hw), close(hw), end
 end
 
+N=size(X);
+if theiler_window > 0
+    X_theiler=double(triu(X,theiler_window))+double(tril(X,-theiler_window));
+else
+    X_theiler=X;
+end
+
+% compute recurrence times of 1st and 2nd type
 errcode=20;
 t1=[0];t2=[];
-for i2=1:size(X,2)
-  rps2=find(diff(double(X(:,i2)))==1);
-  rps=find(X(:,i2));
+for i2=1:size(X_theiler,2)
+  if(Nx-w < 2), waitbar(i2/size(X_theiler,2)), end
+  rps2=find(diff(double(X_theiler(:,i2)))==1);
+  rps=find(X_theiler(:,i2));
   t1=[t1;diff(rps)];
   t2=[t2;diff(rps2)];
 end
 t1=mean(t1);
 t2=mean(t2);
 
-N=size(X);
-X_theiler=double(triu(X,theiler_window))+double(tril(X,-theiler_window));
-
 [a b]=dl(X_theiler);
+
 warning off 
 errcode=201;
 b(find(b<lmin))=[];
-[c d]=tt(X);
+[c d]=tt(X_theiler);
 warning off 
 errcode=202;
 d(find(d<vmin))=[];
@@ -960,7 +970,7 @@ d(find(d<vmin))=[];
 errcode=203;
 RR=sum(X_theiler(:))/(N(1)*N(2));
 %b(find(b>=max(N)-lmin))=[]; if isempty(b), b=0; end
-b(find(b>=max(N)))=[]; if isempty(b), b=0; end
+if isempty(b), b=0; end
 errcode=204;
 if sum(sum(X_theiler)) > 0
   DET=sum(b)/sum(sum(X_theiler));
@@ -969,14 +979,15 @@ else
 end
 errcode=205;
 L=mean(b);
-histL=hist(b(:));
+histL=hist(b(:),[1:min(N)]);
 ENTR=entropy(histL(:));
 errcode=206;
 if sum(d)>0
-  LAM=sum(d)/sum(sum(X));
+  LAM=sum(d)/sum(sum(X_theiler));
 else
   LAM=NaN;
 end
+
 errcode=207;
 TT=mean(d);
 b=[b;0]; Lmax=max(b);
-- 
GitLab