diff --git a/matlab/@dynDate/colon.m b/matlab/@dynDate/colon.m index ddf155e54d28ba840e71ca0f0e36fea049247f66..6100cdd8a8bc2effc581cea42d4d11c68569f318 100644 --- a/matlab/@dynDate/colon.m +++ b/matlab/@dynDate/colon.m @@ -4,7 +4,7 @@ function sp = colon(a,b) %! @deftypefn {Function File} {@var{sp} =} colon (@var{a},@var{b}) %! @anchor{@dynDate/colon} %! @sp 1 -%! Overloads the colon operator for the Dynare Dates class (@ref{dynDate}). Creates a @ref{dynTime} object. +%! Overloads the colon operator for the Dynare Dates class (@ref{dynDate}). Creates a @ref{dynDates} object. %! @sp 2 %! @strong{Inputs} %! @sp 1 @@ -19,13 +19,13 @@ function sp = colon(a,b) %! @sp 1 %! @table @ @var %! @item c -%! Dynare Time object instantiated by @ref{dynTime}. +%! Dynare Dates object instantiated by @ref{dynDates}. %! @end table %! @sp 2 %! @strong{This function is called by:} %! @sp 2 %! @strong{This function calls:} -%! @ref{dynTime}, @ref{@@dynTime/setFreq}, @ref{@@dynTime/setTime}, @ref{@@dynTime/setSize} +%! @ref{dynDates}, @ref{@@dynDates/setFreq}, @ref{@@dynDates/setTime}, @ref{@@dynDates/setSize} %! %! @end deftypefn %@eod: @@ -50,7 +50,7 @@ function sp = colon(a,b) % Original author: stephane DOT adjemian AT univ DASH lemans DOT fr if nargin~=2 - error('dynTime::colon: I need exactly two input arguments!') + error('dynDate::colon: I need exactly two input arguments!') end if ~( isa(a,'dynDate') && isa(b,'dynDate')) @@ -65,22 +65,28 @@ if a>b error(['dynDate::colon: ' inputname(1) ' must precede ' inputname(2) '!' ]) end -if a==b% Time range with only one date. - sp = dynTime(); - sp = sp.setFreq(a.freq); - sp = sp.setSize(1); - sp = sp.setTime(1,a.time); -else - n = b-a; - sp = dynTime(); - sp = sp.setFreq(a.freq); - sp = sp.setSize(n+1); - sp = sp.setTime(1,a.time); - for t=2:n+1 - a = +a; - sp = sp.setTime(t,a.time); - end +sp = dynDates(a); +n = b-a; +for t=1:n + a = +a; + sp = sp.append(a); end +% $$$ if a==b% Time range with only one date. +% $$$ sp = dynDates(a); +% $$$ sp = sp.setFreq(a.freq); +% $$$ sp = sp.setSize(1); +% $$$ sp = sp.setTime(1,a.time); +% $$$ else +% $$$ n = b-a; +% $$$ sp = dynDates(); +% $$$ sp = sp.setFreq(a.freq); +% $$$ sp = sp.setSize(n+1); +% $$$ sp = sp.setTime(1,a.time); +% $$$ for t=2:n+1 +% $$$ a = +a; +% $$$ sp = sp.setTime(t,a.time); +% $$$ end +% $$$ end %@test:1 %$ % Define two dates diff --git a/matlab/@dynDates/dynDates.m b/matlab/@dynDates/dynDates.m index 23cd55523253bdadfc5039742a698a267875b7e5..c772ed7e51912bdff2fed396fec6d2ac2ed84edd 100644 --- a/matlab/@dynDates/dynDates.m +++ b/matlab/@dynDates/dynDates.m @@ -66,9 +66,9 @@ function dd = dynDates(varargin) dd = struct; -dd.ndat = []; +dd.ndat = 0; dd.freq = []; -dd.time = dynTime(); +dd.time = []; dd = class(dd,'dynDates'); @@ -80,7 +80,7 @@ switch nargin if isa(varargin{1},'dynDates') % Returns a copy of the input argument dd = varargin{1}; - elseif ischar(varargin{1}) + elseif ischar(varargin{1}) || isa(varargin{1},'dynDate') tmp = dynDate(varargin{1}); dd.ndat = 1; dd.freq = tmp.freq; diff --git a/matlab/@dynSeries/subsref.m b/matlab/@dynSeries/subsref.m index 1d9b0ea548b9f9749dc7cabf7d18b3ce306b3f42..11f4180049a617743e6b77bee56dbc9c38af3e2b 100644 --- a/matlab/@dynSeries/subsref.m +++ b/matlab/@dynSeries/subsref.m @@ -92,6 +92,8 @@ if length(S)==1 && isequal(S.type,'.') end if length(S)==1 && isequal(S.type,'()') + if isa(S.subs{1},'dynTime') + if ischar(S.subs{1}) us = dynSeries(S.subs{1}); else