Closes #21.

It is possible to rename the dseries class. For instance, the
following is a valid syntax:

>> tseries = dseries();
>> tseries(ones(3,2))

ans is a dseries object:

   | Variable_1 | Variable_2
1Y | 1          | 1
2Y | 1          | 1
3Y | 1          | 1

It is also allowed to define a default starting period for the data passed
to the renamed dseries class/object:

>> tseries = dseries('1938M11')
>> tseries(ones(83,2))

ans is a dseries object:

        | Variable_1 | Variable_2
1938M11 | 1          | 1
1938M12 | 1          | 1
1939M1  | 1          | 1
1939M2  | 1          | 1
1939M3  | 1          | 1
1939M4  | 1          | 1
1939M5  | 1          | 1
1939M6  | 1          | 1
1939M7  | 1          | 1
1939M8  | 1          | 1
        |            |
1944M11 | 1          | 1
1944M12 | 1          | 1
1945M1  | 1          | 1
1945M2  | 1          | 1
1945M3  | 1          | 1
1945M4  | 1          | 1
1945M5  | 1          | 1
1945M6  | 1          | 1
1945M7  | 1          | 1
1945M8  | 1          | 1
1945M9  | 1          | 1
parent c5ef3772
......@@ -88,7 +88,7 @@ switch S(1).type
case 'length'
error(['dseries::subsref: we do not support the length operator on ' ...
'dseries. Please use ''nobs'' or ''vobs''']);
case 'save'
case 'save'
% Save dseries object on disk (default is a mat file).
B = NaN;
if isequal(length(S),2)
......@@ -219,6 +219,7 @@ switch S(1).type
B = A;
end
elseif isdates(S(1).subs{1}) || isdate(S(1).subs{1})
% Select observation(s) with date(s)
if isdate(S(1).subs{1})
Dates = dates(S(1).subs{1});
else
......@@ -236,8 +237,27 @@ switch S(1).type
B = copy(A);
B.data = B.data(tdx,:);
B.dates = B.dates(tdx);
elseif isvector(S(1).subs{1}) && all(isint(S(1).subs{1}))
error('dseries::subsref: It is not possible to select observations with a vector of integers. You have to index with a dates object instead!');
elseif isnumeric(S(1).subs{1}) && isequal(ndims(S(1).subs{1}), 2)
if isempty(A)
% Populate an empty dseries object.
if isempty(A.dates)
B = copy(A);
B.dates = dates('1Y'):dates('1Y')+(rows(S(1).subs{1})-1);
B.data = S(1).subs{1};
B.name = default_name(columns(B.data));
B.tex = name2tex(B.name);
B.ops = cell(length(B.name), 1);
else
B = copy(A);
B.dates = B.dates:B.dates+(rows(S(1).subs{1})-1);
B.data = S(1).subs{1};
B.name = default_name(columns(B.data));
B.tex = name2tex(B.name);
B.ops = cell(length(B.name), 1);
end
else
error('dseries::subsref: It is not possible to populate a non empty dseries object!');
end
else
error('dseries::subsref: I have no idea of what you are trying to do!')
end
......@@ -694,4 +714,38 @@ return
end
T = all(t);
%@eof:17
\ No newline at end of file
%@eof:17
%@test:18
try
tseries = dseries();
ts = tseries(ones(10,1));
t(1) = true;
catch
t(1) = false;
end
if t(1)
t(2) = ts.dates(1)==dates('1Y');
t(3) = ts.dates(10)==dates('10Y');
end
T = all(t);
%@eof:18
%@test:19
try
tseries = dseries(dates('2000Q1'));
ts = tseries(ones(5,1));
t(1) = true;
catch
t(1) = false;
end
if t(1)
t(2) = ts.dates(1)==dates('2000Q1');
t(3) = ts.dates(5)==dates('2001Q1');
end
T = all(t);
%@eof:19
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment