Improve speed of comparison methods (lt, gt, le and ge) for @dates class.
parent
84caf6d35f
commit
cf86c8f721
|
@ -43,26 +43,41 @@ if isequal(A.ndat, B.ndat)
|
||||||
C = (A==B);
|
C = (A==B);
|
||||||
idx = find(C==0);
|
idx = find(C==0);
|
||||||
for i=1:length(idx)
|
for i=1:length(idx)
|
||||||
C(idx(i)) = compare_vectors(@gt, A.time(idx(i),:), B.time(idx(i),:));
|
C(idx(i)) = greaterorequal(A.time(idx(i),:), B.time(idx(i),:));
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if isequal(A.ndat,1) && isequal(B.ndat,1)
|
if isequal(A.ndat,1)
|
||||||
C = compare_vectors(@ge, A.time, B.time);
|
|
||||||
elseif isequal(A.ndat,1)
|
|
||||||
C = NaN(B.ndat,1);
|
C = NaN(B.ndat,1);
|
||||||
for i=1:B.ndat
|
for i=1:B.ndat
|
||||||
C(i) = compare_vectors(@ge, A.time, B.time(i,:));
|
C(i) = greaterorequal(A.time, B.time(i,:));
|
||||||
end
|
end
|
||||||
elseif isequal(B.ndat,1)
|
elseif isequal(B.ndat,1)
|
||||||
C = NaN(A.ndat,1);
|
C = NaN(A.ndat,1);
|
||||||
for i=1:A.ndat
|
for i=1:A.ndat
|
||||||
C(i) = compare_vectors(@ge, A.time(i,:), B.time);
|
C(i) = greaterorequal(A.time(i,:), B.time);
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
C = 0;
|
C = 0;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function c = greaterorequal(a,b)
|
||||||
|
if a(1)>b(1)
|
||||||
|
c = 1;
|
||||||
|
else
|
||||||
|
if a(1)<b(1)
|
||||||
|
c = 0;
|
||||||
|
else
|
||||||
|
if a(2)>=b(2)
|
||||||
|
c = 1;
|
||||||
|
else
|
||||||
|
c = 0;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
%@test:1
|
%@test:1
|
||||||
%$ % Define some dates
|
%$ % Define some dates
|
||||||
%$ date_2 = '1950Q2';
|
%$ date_2 = '1950Q2';
|
||||||
|
|
|
@ -42,26 +42,40 @@ end
|
||||||
if isequal(A.ndat, B.ndat)
|
if isequal(A.ndat, B.ndat)
|
||||||
C = NaN(A.ndat,1);
|
C = NaN(A.ndat,1);
|
||||||
for i=1:A.ndat
|
for i=1:A.ndat
|
||||||
C(i) = compare_vectors(@gt, A.time(i,:), B.time(i,:));
|
C(i) = greaterthan(A.time(i,:), B.time(i,:));
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if isequal(A.ndat,1) && isequal(B.ndat,1)
|
if isequal(A.ndat,1)
|
||||||
C = compare_vectors(@gt, A.time, B.time);
|
|
||||||
elseif isequal(A.ndat,1)
|
|
||||||
C = NaN(B.ndat,1);
|
C = NaN(B.ndat,1);
|
||||||
for i=1:B.ndat
|
for i=1:B.ndat
|
||||||
C(i) = compare_vectors(@gt, A.time, B.time(i,:));
|
C(i) = greaterthan(A.time, B.time(i,:));
|
||||||
end
|
end
|
||||||
elseif isequal(B.ndat,1)
|
elseif isequal(B.ndat,1)
|
||||||
C = NaN(A.ndat,1);
|
C = NaN(A.ndat,1);
|
||||||
for i=1:A.ndat
|
for i=1:A.ndat
|
||||||
C(i) = compare_vectors(@gt, A.time(i,:), B.time);
|
C(i) = greaterthan(A.time(i,:), B.time);
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
C = 0;
|
C = 0;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function c = greaterthan(a,b)
|
||||||
|
if a(1)>b(1)
|
||||||
|
c = 1;
|
||||||
|
else
|
||||||
|
if a(1)<b(1)
|
||||||
|
c = 0;
|
||||||
|
else
|
||||||
|
if a(2)>b(2)
|
||||||
|
c = 1;
|
||||||
|
else
|
||||||
|
c = 0;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
%@test:1
|
%@test:1
|
||||||
%$ % Define some dates
|
%$ % Define some dates
|
||||||
%$ date_2 = '1950Q2';
|
%$ date_2 = '1950Q2';
|
||||||
|
|
|
@ -43,26 +43,41 @@ if isequal(A.ndat, B.ndat)
|
||||||
C = (A==B);
|
C = (A==B);
|
||||||
idx = find(C==0);
|
idx = find(C==0);
|
||||||
for i=1:length(idx)
|
for i=1:length(idx)
|
||||||
C(idx(i)) = compare_vectors(@lt, A.time(idx(i),:), B.time(idx(i),:));
|
C(idx(i)) = lessorequal(A.time(idx(i),:), B.time(idx(i),:));
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if isequal(A.ndat,1) && isequal(B.ndat,1)
|
if isequal(A.ndat,1)
|
||||||
C = compare_vectors(@le, A.time, B.time);
|
|
||||||
elseif isequal(A.ndat,1)
|
|
||||||
C = NaN(B.ndat,1);
|
C = NaN(B.ndat,1);
|
||||||
for i=1:B.ndat
|
for i=1:B.ndat
|
||||||
C(i) = compare_vectors(@le, A.time, B.time(i,:));
|
C(i) = lessorequal(A.time, B.time(i,:));
|
||||||
end
|
end
|
||||||
elseif isequal(B.ndat,1)
|
elseif isequal(B.ndat,1)
|
||||||
C = NaN(A.ndat,1);
|
C = NaN(A.ndat,1);
|
||||||
for i=1:A.ndat
|
for i=1:A.ndat
|
||||||
C(i) = compare_vectors(@le, A.time(i,:), B.time);
|
C(i) = lessorequal(A.time(i,:), B.time);
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
C = 0;
|
C = 0;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function c = lessorequal(a, b)
|
||||||
|
if a(1)<b(1)
|
||||||
|
c = 1;
|
||||||
|
else
|
||||||
|
if a(1)>b(1)
|
||||||
|
c = 0;
|
||||||
|
else
|
||||||
|
if a(2)<=b(2)
|
||||||
|
c = 1;
|
||||||
|
else
|
||||||
|
c = 0;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
%@test:1
|
%@test:1
|
||||||
%$ % Define some dates
|
%$ % Define some dates
|
||||||
%$ date_2 = '1950Q2';
|
%$ date_2 = '1950Q2';
|
||||||
|
@ -79,7 +94,7 @@ end
|
||||||
%$ i2 = (d3<=d4);
|
%$ i2 = (d3<=d4);
|
||||||
%$ i3 = (d4<=d2);
|
%$ i3 = (d4<=d2);
|
||||||
%$ i4 = (d5<=d4);
|
%$ i4 = (d5<=d4);
|
||||||
%$ i5 = (d5<=d5);
|
%$ i5 = (d5<=d5);
|
||||||
%$
|
%$
|
||||||
%$ % Check the results.
|
%$ % Check the results.
|
||||||
%$ t(1) = dyn_assert(i1,1);
|
%$ t(1) = dyn_assert(i1,1);
|
||||||
|
|
|
@ -42,26 +42,39 @@ end
|
||||||
if isequal(A.ndat, B.ndat)
|
if isequal(A.ndat, B.ndat)
|
||||||
C = NaN(A.ndat,1);
|
C = NaN(A.ndat,1);
|
||||||
for i=1:A.ndat
|
for i=1:A.ndat
|
||||||
C(i) = compare_vectors(@lt, A.time(i,:), B.time(i,:));
|
C(i) = lessthan(A.time(i,:),B.time(i,:));
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if isequal(A.ndat,1) && isequal(B.ndat,1)
|
if isequal(A.ndat,1)
|
||||||
C = compare_vectors(@lt, A.time, B.time);
|
|
||||||
elseif isequal(A.ndat,1)
|
|
||||||
C = NaN(B.ndat,1);
|
C = NaN(B.ndat,1);
|
||||||
for i=1:B.ndat
|
for i=1:B.ndat
|
||||||
C(i) = compare_vectors(@lt, A.time, B.time(i,:));
|
C(i) = lessthan(A.time,B.time(i,:));
|
||||||
end
|
end
|
||||||
elseif isequal(B.ndat,1)
|
elseif isequal(B.ndat,1)
|
||||||
C = NaN(A.ndat,1);
|
C = NaN(A.ndat,1);
|
||||||
for i=1:A.ndat
|
for i=1:A.ndat
|
||||||
C(i) = compare_vectors(@lt, A.time(i,:), B.time);
|
C(i) = lessthan(A.time(i,:),B.time);
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
C = 0;
|
C = 0;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function c = lessthan(a,b)
|
||||||
|
if a(1)<b(1)
|
||||||
|
c = 1;
|
||||||
|
else
|
||||||
|
if a(1)>b(1)
|
||||||
|
c = 0;
|
||||||
|
else
|
||||||
|
if a(2)<b(2)
|
||||||
|
c = 1;
|
||||||
|
else
|
||||||
|
c = 0;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
%@test:1
|
%@test:1
|
||||||
%$ % Define some dates
|
%$ % Define some dates
|
||||||
%$ date_2 = '1950Q2';
|
%$ date_2 = '1950Q2';
|
||||||
|
|
Loading…
Reference in New Issue