diff --git a/src/@dates/setdiff.m b/src/@dates/setdiff.m index 5d7484866b0b1b9fcc73604720d604af8d7a25a8..1c3edab67f7721af3405f7701b2437f89902c404 100644 --- a/src/@dates/setdiff.m +++ b/src/@dates/setdiff.m @@ -1,4 +1,4 @@ -function C = setdiff(A,B) % --*-- Unitary tests --*-- +function [C, IA] = setdiff(A,B) % --*-- Unitary tests --*-- %@info: %! @deftypefn {Function File} {@var{C} =} setdiff (@var{A},@var{B}) @@ -21,11 +21,13 @@ function C = setdiff(A,B) % --*-- Unitary tests --*-- %! @table @ @var %! @item C %! @ref{dates} object. +%! @item IA +%! Vector of integers such that C=A(IA). %! @end table %! @end deftypefn %@eod: -% Copyright (C) 2013 Dynare Team +% Copyright (C) 2013-2015 Dynare Team % % This file is part of Dynare. % @@ -52,21 +54,31 @@ end if isequal(A,B) C = dates(A.freq); + if nargout>1, IA = []; end return end if isoctave || matlab_ver_less_than('8.1.0') - time = setdiff(A.time,B.time,'rows'); + if nargout<2 + time = setdiff(A.time,B.time,'rows'); + else + [time, IA] = setdiff(A.time,B.time,'rows'); + end else - time = setdiff(A.time,B.time,'rows','legacy'); + if nargout<2 + time = setdiff(A.time,B.time,'rows','legacy'); + else + [time, IA] = setdiff(A.time,B.time,'rows','legacy'); + end end -C = dates(); +C = dates(A.freq); + if isempty(time) + IA = []; return end -C.freq = A.freq; C.time = time; C.ndat = rows(time);