diff --git a/tt.m b/tt.m index 7cb13f97e9e4cce6b54075d0ac06406a7ffd6d94..0ee8045a9ed8c46067c5fe01fe68070e3dbda702 100644 --- a/tt.m +++ b/tt.m @@ -1,4 +1,4 @@ -function [a_out, b_out]=tt(x) +function [a_out, b_out, c_out]=tt(x) % TT Mean trapping time and its distribution. % A=TT(X) computes the mean of the length of the vertical % line structures in a recurrence plot, so called trapping @@ -23,6 +23,9 @@ function [a_out, b_out]=tt(x) % $Revision$ % % $Log$ +% Revision 3.3 2005/11/23 07:29:14 marwan +% help text updated +% % Revision 3.2 2005/03/16 11:19:02 marwan % help text modified % @@ -36,30 +39,25 @@ function [a_out, b_out]=tt(x) % of the License, or any later version. error(nargchk(1,1,nargin)); -if nargout>2, error('Too many output arguments'), end +if nargout>3, error('Too many output arguments'), end + +%a_out = NaN; b_out = NaN; c_out = NaN; warning off if any(x(:)) - if min(size(x))>1000 % this should speed up the routine; the value - % depends on the available memory - x2=uint8(x); - x2(end+1,:)=0; - x=reshape(x2,size(x2,1)*size(x2,2),1); - x2=x(2:end);x(end)=[]; - z0=find(x==0&x2==1); - z1=find(x2==0&x==1); - - else - - x(end+1,:)=0;x=double(x); - z=diff(reshape(x,size(x,1)*size(x,2),1)); - z0=find(~(z-1)); - z1=find(~(z+1)); - - end - + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% for black vertical lines + xb=double(x); + xb(end+1,:)=0;xb=double(xb(:)); + z=diff(xb); + z0=find(z==1); % begin of black sequence + z1=find(z==-1); % end of black sequence + + % measure the length of black lines if z0(1)>z1(1) z0(2:end+1)=z0(1:end);z0(1)=0; if length(z0)>length(z1) @@ -69,8 +67,43 @@ if any(x(:)) t=sort(z1-z0); t1=t(find(t-1)); + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% for white vertical lines + for i = 1:size(x,2) + i_ = find(x(:,i)); + i1 = min(i_); i2 = max(i_); + x(1:i1,i) = 1; + x(i2:end,i) = 1; + end + + xw=double(x); xw(end+1,:)=1; + zw=diff(xw(:)); + z0w=find(zw==-1); % begin of white sequence + z1w=find(zw==1); % end of white sequence + + + + % measure the length of white lines + if z0w(1)>z1w(1) + z0w(1)=[]; + if length(z1w)>length(z0w) + z1w(end)=[]; + end + end + if length(z1w)>length(z0w) + z0w=[1;z0w]; + end + + tw=sort(z1w-z0w); + t1w=tw(find(tw-1)); - if nargout==2 + if nargout==3 + c_out=zeros(length(tw),1); + c_out=tw; + end + + if nargout>=2 b_out=zeros(length(t),1); b_out=t; end @@ -85,7 +118,11 @@ if any(x(:)) else - if nargout==2 + if nargout==3 + c_out=NaN; + end + + if nargout>=2 b_out=NaN; end