diff --git a/matlab/@dynDate/uplus.m b/matlab/@dynDate/uplus.m deleted file mode 100644 index c742d49ea..000000000 --- a/matlab/@dynDate/uplus.m +++ /dev/null @@ -1,118 +0,0 @@ -function b = uplus(a) % --*-- Unitary tests --*-- - -%@info: -%! @deftypefn {Function File} {@var{b} =} uplus (@var{a}) -%! @anchor{@dynDate/uplus} -%! @sp 1 -%! Overloads the uplus (unary addition) operator for the Dynare dates class (@ref{dynDate}). Increment the date by one year, quarter, -%! month or week depending on the frequency. -%! @sp 2 -%! @strong{Inputs} -%! @sp 1 -%! @table @ @var -%! @item a -%! Dynare date object instantiated by @ref{dynDate}. -%! @end table -%! @sp 1 -%! @strong{Outputs} -%! @sp 1 -%! @table @ @var -%! @item b -%! Dynare date object instantiated by @ref{dynDate}. -%! @end table -%! @sp 2 -%! @strong{This function is called by:} -%! @sp 2 -%! @strong{This function calls:} -%! @ref{dynDate} -%! -%! @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 ~isa(a,'dynDate') - error(['dynDate::uplus: Input argument ' inputname(1) ' must be a dynDate object.']) -end - -b = dynDate(a); - -switch b.freq - case 1 - b.time(1) = b.time(1)+1; - case 4 - if b.time(2)==4% Happy new year! - b.time(1) = b.time(1)+1; - b.time(2) = 1; - else - b.time(2) = b.time(2)+1; - end - case 12 - if b.time(2)==12% Happy new year! - b.time(1) = b.time(1)+1; - b.time(2) = 1; - else - b.time(2) = b.time(2)+1; - end - case 52 - if b.time(2)==52% Happy new year! - b.time(1) = b.time(1)+1; - b.time(2) = 1; - else - b.time(2) = b.time(2)+1; - end - otherwise - error('dynDate::uplus: Unknown frequency!') -end - -%@test:1 -%$ % Define some dates -%$ date_1 = '1950Q3'; -%$ date_2 = '1950Q4'; -%$ date_3 = '1950M3'; -%$ date_4 = '1950m12'; -%$ date_5 = '1950W3'; -%$ date_6 = '1950W52'; -%$ date_7 = 2000; -%$ -%$ % Call the tested routine. -%$ d1 = dynDate(date_1); -%$ d2 = dynDate(date_2); -%$ d3 = dynDate(date_3); -%$ d4 = dynDate(date_4); -%$ d5 = dynDate(date_5); -%$ d6 = dynDate(date_6); -%$ d7 = dynDate(date_7); -%$ e1 = +d1; -%$ e2 = +d2; -%$ e3 = +d3; -%$ e4 = +d4; -%$ e5 = +d5; -%$ e6 = +d6; -%$ e7 = +d7; -%$ -%$ % Check the results. -%$ t(1) = dyn_assert(e1.time,[1950 4]); -%$ t(2) = dyn_assert(e2.time,[1951 1]); -%$ t(3) = dyn_assert(e3.time,[1950 4]); -%$ t(4) = dyn_assert(e4.time,[1951 1]); -%$ t(5) = dyn_assert(e5.time,[1950 4]); -%$ t(6) = dyn_assert(e6.time,[1951 1]); -%$ t(7) = dyn_assert(e7.time,[2001 1]); -%$ T = all(t); -%@eof:1 diff --git a/matlab/@dynDates/uplus.m b/matlab/@dynDates/uplus.m new file mode 100644 index 000000000..3d5b02993 --- /dev/null +++ b/matlab/@dynDates/uplus.m @@ -0,0 +1,61 @@ +function B = uplus(A) + +% Overloads the unary plus operator for dynDates objects. Shifts all the elements by one period. +% +% INPUTS +% o A dynDates object with n elements. +% +% OUTPUTS +% o B dynDates object with n elements. + +% 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 . + +B = dynDates(A); +B.time(:,2) = B.time(:,2)+1; +idx = find(B.time(:,2)>B.freq); % Happy new year! +B.time(idx,1) = B.time(idx,1)+1; +B.time(idx,2) = 1; + +%@test:1 +%$ % Define some dates +%$ date_1 = '1950Y'; +%$ date_2 = '1950Q2'; +%$ date_3 = '1950Q4'; +%$ date_4 = '1950M2'; +%$ date_5 = '1950M12'; +%$ +%$ % Call the tested routine. +%$ d1 = dynDates(date_1); d1 = +d1; +%$ d2 = dynDates(date_2); d2 = +d2; +%$ d3 = dynDates(date_3); d3 = +d3; +%$ d4 = dynDates(date_4); d4 = +d4; +%$ d5 = dynDates(date_5); d5 = +d5; +%$ i1 = (d1==dynDates('1951Y')); +%$ i2 = (d2==dynDates('1950Q3')); +%$ i3 = (d3==dynDates('1951Q1')); +%$ i4 = (d4==dynDates('1950M3')); +%$ i5 = (d5==dynDates('1951M1')); +%$ +%$ % Check the results. +%$ t(1) = dyn_assert(i1,1); +%$ t(2) = dyn_assert(i2,1); +%$ t(3) = dyn_assert(i3,1); +%$ t(4) = dyn_assert(i4,1); +%$ t(5) = dyn_assert(i5,1); +%$ T = all(t); +%@eof:1 \ No newline at end of file