From f37d5230207dc4ddcb5a8fbe9c2ee21721db8e7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Adjemian=20=28Charybdis=29?= <stephane.adjemian@univ-lemans.fr> Date: Wed, 11 Nov 2015 22:39:35 +0100 Subject: [PATCH] Added a second output to setdiff method. If A and B are dates objects, then [C, IA] = setdiff(A, B) returns a dates object C whose elements are the elements belonging to A that are not member of B, and IA is a vector of integers such that C = A(IA). --- src/@dates/setdiff.m | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/src/@dates/setdiff.m b/src/@dates/setdiff.m index 5d74848..1c3edab 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); -- GitLab