Changed dynDates constructor.
parent
294356db22
commit
74d7bcbc71
|
@ -62,12 +62,7 @@ function dd = dynDates(varargin) % --*-- Unitary tests --*--
|
||||||
% You should have received a copy of the GNU General Public License
|
% You should have received a copy of the GNU General Public License
|
||||||
% along with Dynare. If not, see <http://www.gnu.org/licenses/>.
|
% along with Dynare. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
dd = struct;
|
dd = struct('ndat', 0, 'freq', NaN(0), 'time', NaN(0,2));
|
||||||
|
|
||||||
dd.ndat = 0;
|
|
||||||
dd.freq = NaN;
|
|
||||||
dd.time = NaN(1,2);
|
|
||||||
|
|
||||||
dd = class(dd,'dynDates');
|
dd = class(dd,'dynDates');
|
||||||
|
|
||||||
switch nargin
|
switch nargin
|
||||||
|
@ -78,26 +73,49 @@ switch nargin
|
||||||
if isa(varargin{1},'dynDates')
|
if isa(varargin{1},'dynDates')
|
||||||
% Returns a copy of the input argument
|
% Returns a copy of the input argument
|
||||||
dd = varargin{1};
|
dd = varargin{1};
|
||||||
elseif ischar(varargin{1}) || isa(varargin{1},'dynDate')
|
elseif ischar(varargin{1}) && isdate(varargin{1})
|
||||||
tmp = dynDate(varargin{1});
|
date = string2date(varargin{1});
|
||||||
dd.ndat = 1;
|
dd.ndat = 1;
|
||||||
dd.freq = tmp.freq;
|
dd.freq = date.freq;
|
||||||
dd.time = tmp.time;
|
dd.time = date.time;
|
||||||
|
elseif ischar(varargin{1}) && ismember(upper(varargin{1}),{'A','Y','Q','M','W'})
|
||||||
|
% Instantiate an empty dynDates object (only set frequency)
|
||||||
|
switch upper(varargin{1})
|
||||||
|
case {'Y','A'}
|
||||||
|
dd.freq = 1;
|
||||||
|
case 'Q'
|
||||||
|
dd.freq = 4;
|
||||||
|
case 'M'
|
||||||
|
dd.freq = 12;
|
||||||
|
case 'W'
|
||||||
|
dd.freq = 52;
|
||||||
|
otherwise
|
||||||
|
error('dynDates::dynDates: This is a bug. Please contact Dynare''s authors!')
|
||||||
|
end
|
||||||
else
|
else
|
||||||
error('dynDates:: Wrong calling sequence of the constructor!')
|
error('dynDates:: Wrong calling sequence of the constructor!')
|
||||||
end
|
end
|
||||||
otherwise
|
otherwise
|
||||||
tmp = dynDate(varargin{1});
|
|
||||||
dd.ndat = nargin;
|
dd.ndat = nargin;
|
||||||
dd.time = NaN(dd.ndat,2);
|
dd.time = NaN(dd.ndat,2);
|
||||||
dd.freq = tmp.freq;
|
if ischar(varargin{1}) && isdate(varargin{1})
|
||||||
dd.time(1,:) = tmp.time;
|
date = string2date(varargin{1});
|
||||||
|
dd.freq = date.freq;
|
||||||
|
dd.time(1,:) = date.time;
|
||||||
|
else
|
||||||
|
error(['dynDates::dynDates: Input 1 has to be a string date!'])
|
||||||
|
end
|
||||||
for i=2:dd.ndat
|
for i=2:dd.ndat
|
||||||
tmp = dynDate(varargin{i});
|
if ischar(varargin{i}) && isdate(varargin{i})
|
||||||
if ~isequal(dd.freq,tmp.freq)
|
date = string2date(varargin{i});
|
||||||
error(['dynDates:: The frequency declared in input argument number ' int2str(i) ' is different from the frequency declared in the first input argument!'])
|
if isequal(date.freq,dd.freq)
|
||||||
|
dd.time(i,:) = date.time;
|
||||||
|
else
|
||||||
|
error(['dynDates::dynDates: Check that all the inputs have the same frequency (see input number ' str2num(i) ')!'])
|
||||||
|
end
|
||||||
|
else
|
||||||
|
error(['dynDates::dynDates: Input ' str2num(i) ' has to be a string date!'])
|
||||||
end
|
end
|
||||||
dd.time(i,:) = tmp.time;
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue