diff --git a/matlab/@dynDates/intersect.m b/matlab/@dynDates/intersect.m new file mode 100644 index 0000000000000000000000000000000000000000..7c8cf39ded44736274d04a57e4ed052ffd648379 --- /dev/null +++ b/matlab/@dynDates/intersect.m @@ -0,0 +1,84 @@ +function C = intersect(A,B) + +%@info: +%! @deftypefn {Function File} {@var{C} =} intersect (@var{A},@var{B}) +%! @anchor{@dynDates/intersect} +%! @sp 1 +%! C of B and A. +%! if A and B are not disjoints. +%! @sp 2 +%! @strong{Inputs} +%! @sp 1 +%! @table @ @var +%! @item A +%! @ref{dynDates} object. +%! @item B +%! @ref{dynDates} object. +%! @end table +%! @sp 2 +%! @strong{Outputs} +%! @sp 1 +%! @table @ @var +%! @item C +%! @ref{dynDates} object. +%! @end table +%! @end deftypefn +%@eod: + +% 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 <http://www.gnu.org/licenses/>. + +if ~isa(A,'dynDates') || ~isa(B,'dynDates') + error(['dynDates::plus: Input arguments ''' inputname(1) ''' and ''' inputname(2) ''' must be dynDates objects!']) +end + +if eq(A,B) + C = A; + return +end + +if ~isequal(A.freq,B.freq) + C = dynDates(); + return +end + +[tmp,ia,ib] = intersect(A.time,B.time,'rows'); + +C = dynDates(); +if isempty(tmp) + return +end + +C.freq = A.freq; +C.time = tmp; +C.ndat = rows(tmp); + +%@test:1 +%$ % Define some dynDates objects +%$ d1 = dynDate('1950Q1'):dynDate('1969Q4') ; +%$ d2 = dynDate('1960Q1'):dynDate('1969Q4') ; +%$ d3 = dynDate('1970Q1'):dynDate('1979Q4') ; +%$ +%$ % Call the tested routine. +%$ c1 = intersect(d1,d2); +%$ c2 = intersect(d1,d3); +%$ +%$ % Check the results. +%$ t(1) = dyn_assert(c1==d2,1); +%$ t(2) = dyn_assert(isempty(c2),1); +%$ T = all(t); +%@eof:1 \ No newline at end of file