diff --git a/matlab/@dynDate/gt.m b/matlab/@dynDate/gt.m deleted file mode 100644 index 1da3f3fd9..000000000 --- a/matlab/@dynDate/gt.m +++ /dev/null @@ -1,98 +0,0 @@ -function c = gt(a,b) % --*-- Unitary tests --*-- - -%@info: -%! @deftypefn {Function File} {@var{c} =} gt (@var{a},@var{b}) -%! @anchor{@dynDate/gt} -%! @sp 1 -%! Overloads the gt (greater than) operator for the Dynare dates class (@ref{dynDate}). -%! @sp 2 -%! @strong{Inputs} -%! @sp 1 -%! @table @ @var -%! @item a -%! Dynare date object instantiated by @ref{dynDate}. -%! @item b -%! Dynare date object instantiated by @ref{dynDate}. -%! @end table -%! @sp 1 -%! @strong{Outputs} -%! @sp 1 -%! @table @ @var -%! @item c -%! scalar integer equal to one if a>b, 0 otherwise. -%! @end table -%! @sp 2 -%! @strong{This function is called by:} -%! @sp 2 -%! @strong{This function calls:} -%! -%! @end deftypefn -%@eod: - -% Copyright (C) 2011-2013 Dynare Team -% -% This file is part of Dynare. -% -% Dynare is free software: you can redistribute it and/or modify -% it under the terms of the GNU General Public License as published by -% the Free Software Foundation, either version 3 of the License, or -% (at your option) any later version. -% -% Dynare is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with Dynare. If not, see . - -if nargin~=2 - error('dynDate::eq: I need exactly two input arguments!') -end - -if ~( isa(a,'dynDate') && isa(b,'dynDate')) - error(['dynDate::eq: Input arguments ' inputname(1) 'and ' inputname(2) ' have to be a dynDate objects!']) -end - -if ~isequal(a.freq,b.freq) - error(['dynDate::eq: Input arguments ' inputname(1) 'and ' inputname(2) ' have no common frequencies!']) -end - -if a.time(1)>b.time(1) - c = 1; -elseif isequal(a.time(1),b.time(1)) - if a.time(2)>b.time(2) - c = 1; - else - c = 0; - end -else - c = 0; -end - -%@test:1 -%$ % Define some dates -%$ date_1 = 1950; -%$ date_2 = '1950Q2'; -%$ date_3 = '1950Q3'; -%$ date_4 = '1950Q1'; -%$ date_5 = '1949Q2'; -%$ -%$ % Call the tested routine. -%$ d1 = dynDate(date_1); -%$ d2 = dynDate(date_2); -%$ d3 = dynDate(date_3); -%$ d4 = dynDate(date_4); -%$ d5 = dynDate(date_5); -%$ i1 = (d2>d3); -%$ i2 = (d3>d4); -%$ i3 = (d4>d2); -%$ i4 = (d5>d4); -%$ -%$ % Check the results. -%$ t(1) = dyn_assert(i1,0); -%$ t(2) = dyn_assert(i2,1); -%$ t(3) = dyn_assert(i3,0); -%$ t(4) = dyn_assert(i4,0); -%$ T = all(t); -%@eof:1 diff --git a/matlab/@dynDates/gt.m b/matlab/@dynDates/gt.m new file mode 100644 index 000000000..0bb17dfb7 --- /dev/null +++ b/matlab/@dynDates/gt.m @@ -0,0 +1,109 @@ +function C = gt(A,B) + +% Overloads the > operator for dynDates objects. +% +% INPUTS +% o A dynDates object with n or 1 elements. +% o B dynDates object with n or 1 elements. +% +% OUTPUTS +% o C column vector of max(n,1) elements (zeros or ones). + +% Copyright (C) 2013 Dynare Team +% +% This file is part of Dynare. +% +% Dynare is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% Dynare is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with Dynare. If not, see . + +if ~isequal(nargin,2) + error('dynDates::gt: I need exactly two input arguments!') +end + +if ~isa(A,'dynDates') || ~isa(B,'dynDates') + error(['dynDates::gt: Input arguments ''' inputname(1) ''' and ''' inputname(2) ''' have to be a dynDates objects!']) +end + +if ~isequal(A.freq,B.freq) + C = 0; + return +end + +if isequal(A.ndat, B.ndat) + C = NaN(A.ndat,1); + for i=1:A.ndat + C(i) = compare_vectors(@gt, A.time(i,:), B.time(i,:)); + end +else + if isequal(A.ndat,1) && isequal(B.ndat,1) + C = compare_vectors(@gt, A.time, B.time); + elseif isequal(A.ndat,1) + C = NaN(B.ndat,1); + for i=1:B.ndat + C(i) = compare_vectors(@gt, A.time, B.time(i,:)); + end + elseif isequal(B.ndat,1) + C = NaN(A.ndat,1); + for i=1:A.ndat + C(i) = compare_vectors(@gt, A.time(i,:), B.time); + end + else + C = 0; + end +end + +%@test:1 +%$ % Define some dates +%$ date_2 = '1950Q2'; +%$ date_3 = '1950Q3'; +%$ date_4 = '1950Q1'; +%$ date_5 = '1949Q2'; +%$ +%$ % Call the tested routine. +%$ d2 = dynDates(date_2); +%$ d3 = dynDates(date_3); +%$ d4 = dynDates(date_4); +%$ d5 = dynDates(date_5); +%$ i1 = (d2>d3); +%$ i2 = (d3>d4); +%$ i3 = (d4>d2); +%$ i4 = (d5>d4); +%$ +%$ % Check the results. +%$ t(1) = dyn_assert(i1,0); +%$ t(2) = dyn_assert(i2,1); +%$ t(3) = dyn_assert(i3,0); +%$ t(4) = dyn_assert(i4,0); +%$ T = all(t); +%@eof:1 + +%@test:2 +%$ % Define some dates +%$ B1 = '1945Q1'; +%$ B2 = '1945Q2'; +%$ B3 = '1945Q3'; +%$ B4 = '1945Q4'; +%$ B5 = '1950Q1'; +%$ +%$ % Create dynDates objects. +%$ dd = dynDates(B1,B2,B3,B4); +%$ +%$ % Check the results. +%$ t(1) = dyn_assert(dynDates(B1)>dynDates(B2),0); +%$ t(2) = dyn_assert(dynDates(B2)>dynDates(B1),1); +%$ t(3) = dyn_assert(dynDates(B5)>dynDates(B1),1); +%$ t(4) = dyn_assert(dd>dynDates(B5),zeros(4,1)); +%$ t(5) = dyn_assert(dynDates(B5)>dd,ones(4,1)); +%$ t(6) = dyn_assert(dynDates(B1)>dd,[0; zeros(3,1)]); +%$ T = all(t); +%@eof:2 \ No newline at end of file