Updated dynSeries class' constructor.

time-shift
Stéphane Adjemian (Charybdis) 2013-10-16 13:09:11 +02:00
parent eb25a54ee9
commit 2bb66c38f0
1 changed files with 19 additions and 16 deletions

View File

@ -84,7 +84,7 @@ ts.vobs = 0;
ts.name = {}; ts.name = {};
ts.tex = {}; ts.tex = {};
ts.freq = []; ts.freq = [];
ts.init = dynDate(); ts.init = dates();
ts.time = dates(); ts.time = dates();
ts = class(ts,'dynSeries'); ts = class(ts,'dynSeries');
@ -94,13 +94,16 @@ switch nargin
% Create an empty dynSeries object. % Create an empty dynSeries object.
return return
case 1 case 1
if isa(varargin{1},'dynDate') if isa(varargin{1},'dates') && isequal(length(varargin{1}),1)
if isempty(varargin{1}) switch length(varargin{1})
error(['dynSeries:: ' inputname(1) ' (identified as a dynDate object) must be non empty!']) case 0
else error(['dynSeries::dynSeries: ' inputname(1) ' (identified as a dates object) must be non empty!'])
case 1
% Create an empty dynSeries object with an initial date. % Create an empty dynSeries object with an initial date.
ts.init = varargin{1}; ts.init = varargin{1};
ts.freq = varargin{1}.freq; ts.freq = varargin{1}.freq;
otherwise
error(['dynSeries::dynSeries: ' inputname(1) ' (identified as a dates object) must have only one element!'])
end end
return return
elseif ischar(varargin{1}) elseif ischar(varargin{1})
@ -145,7 +148,7 @@ switch nargin
ts.data = varargin{1}; ts.data = varargin{1};
[ts.nobs, ts.vobs] = size(ts.data); [ts.nobs, ts.vobs] = size(ts.data);
ts.freq = 1; ts.freq = 1;
ts.init = dynDate(1); ts.init = dates(1,1);
ts.name = default_name(ts.vobs); ts.name = default_name(ts.vobs);
ts.tex = name2tex(ts.name); ts.tex = name2tex(ts.name);
end end
@ -167,22 +170,22 @@ switch nargin
ts.nobs = size(a,1); ts.nobs = size(a,1);
ts.vobs = size(a,2); ts.vobs = size(a,2);
% Get the first date and set the frequency. % Get the first date and set the frequency.
if ~isempty(b) if isempty(b)
if ischar(b)% Weekly, Monthly or Quaterly data. ts.freq = 1;
ts.init = dynDate(b); ts.init = dates(1,1);
else
if isdate(b)% Weekly, Monthly, Quaterly or Annual data.
ts.init = dates(b);
ts.freq = ts.init.freq; ts.freq = ts.init.freq;
elseif isa(b,'dynDate') && ~isempty(b) elseif isa(b,'dates') && isequal(length(b),1)
ts.freq = b.freq; ts.freq = b.freq;
ts.init = b; ts.init = b;
elseif isnumeric(b) && isreal(b) && isint(b) elseif isnumeric(b) && isscalar(b) && isint(b) % Yearly data.
ts.freq = 1; ts.freq = 1;
ts.init = dynDate(b); ts.init = dates([num2str(b) 'Y']);
else else
error('dynSeries::dynSeries: Wrong calling sequence!'); error('dynSeries::dynSeries: Wrong calling sequence!');
end end
else% If b is empty.
ts.freq = 1;
ts.init = dynDate(1);
end end
% Get the names of the variables. % Get the names of the variables.
if ~isempty(c) if ~isempty(c)
@ -229,7 +232,7 @@ ts.time = ts.init:ts.init+(ts.nobs-1);
%$ t = zeros(4,1); %$ t = zeros(4,1);
%$ %$
%$ try %$ try
%$ aa = dynDate('1938M11'); %$ aa = dates('1938M11');
%$ ts = dynSeries(aa); %$ ts = dynSeries(aa);
%$ t(1) = 1; %$ t(1) = 1;
%$ catch %$ catch