New syntax for populating an empty dseries object.
If ts is an empty dseries object with a defined range of dates: ts = dseries(dates('1990Q1'):dates('1990Q4')); Then the following syntaxes are valid: 1. ts(:) = 1; 2. ts(:) = [1, 2]; 3. ts(:) = randn(4,1); 4. ts(:) = dseries(1); 5. ts(:) = dseries([1, 2]); 6. ts(:) = dseries(randn(4,2)); 7. ts(:) = dseries(randn(4,2),dates('1950M1'):dates('1950M4')); Remarks. [1] In cases 1., 2., 4. and 5. the single observation is replicated to match the number of dates in ts. [2] In cases 4. to 7. the dates in the right member of the assignment are lost (ie ts.dates is not affected by the dates defined in the right members).time-shift
parent
9712f4abe6
commit
20041ac70c
|
@ -162,6 +162,41 @@ switch length(S)
|
|||
else
|
||||
error('dseries::subsasgn: The object on the right hand side must be a dseries object or a numeric array!')
|
||||
end
|
||||
elseif ischar(S(1).subs{1}) && isequal(S(1).subs{1},':') && isempty(A)
|
||||
if isnumeric(B)
|
||||
if isequal(rows(B),1)
|
||||
A.data = repmat(B,A.dates.ndat,1);
|
||||
A.nobs = rows(A.data);
|
||||
A.vobs = columns(A.data);
|
||||
elseif isequal(rows(B),A.dates.ndat)
|
||||
A.data = B;
|
||||
A.nobs = rows(A.data);
|
||||
A.vobs = columns(A.data);
|
||||
else
|
||||
error('dseries::subsasgn: Wrong syntax!')
|
||||
end
|
||||
if isempty(A.name)
|
||||
A.name = default_name(A.vobs);
|
||||
A.tex = name2tex(A.name);
|
||||
end
|
||||
elseif isdseries(B)
|
||||
if isequal(B.nobs,1)
|
||||
A.data = repmat(B.data,A.dates.ndat,1);
|
||||
A.nobs = rows(A.data);
|
||||
A.vobs = columns(A.data);
|
||||
elseif isequal(B.nobs,A.dates.ndat)
|
||||
A.data = B;
|
||||
A.nobs = rows(A.data);
|
||||
A.vobs = columns(A.data);
|
||||
else
|
||||
error('dseries::subsasgn: Wrong syntax!')
|
||||
end
|
||||
if isempty(A.name)
|
||||
A.name = B.name;
|
||||
A.tex = B.tex;
|
||||
end
|
||||
end
|
||||
return
|
||||
else
|
||||
error('dseries::subsasgn: Wrong syntax!')
|
||||
end
|
||||
|
@ -784,4 +819,52 @@ end
|
|||
%$ t(9) = dyn_assert(isequal(ts1.dates(1),dd),1);
|
||||
%$ end
|
||||
%$ T = all(t);
|
||||
%@eof:20
|
||||
%@eof:20
|
||||
|
||||
%@test:21
|
||||
%$ % Define a datasets.
|
||||
%$ A = rand(4,3);
|
||||
%$
|
||||
%$ % Instantiate an empty dseries object.
|
||||
%$ ts = dseries(dates('1950Q1'):dates('1950Q4'));
|
||||
%$
|
||||
%$ % Populate ts
|
||||
%$ try
|
||||
%$ ts(:) = A;
|
||||
%$ t(1) = 1;
|
||||
%$ catch
|
||||
%$ t(1) = 0;
|
||||
%$ end
|
||||
%$
|
||||
%$ % Instantiate a time series object.
|
||||
%$ if t(1)
|
||||
%$ t(2) = dyn_assert(ts.vobs,3);
|
||||
%$ t(3) = dyn_assert(ts.nobs,4);
|
||||
%$ t(4) = dyn_assert(ts.data,A,1e-15);
|
||||
%$ end
|
||||
%$ T = all(t);
|
||||
%@eof:21
|
||||
|
||||
%@test:21
|
||||
%$ % Define a datasets.
|
||||
%$ A = rand(1,3);
|
||||
%$
|
||||
%$ % Instantiate an empty dseries object.
|
||||
%$ ts = dseries(dates('1950Q1'):dates('1950Q4'));
|
||||
%$
|
||||
%$ % Populate ts
|
||||
%$ try
|
||||
%$ ts(:) = A;
|
||||
%$ t(1) = 1;
|
||||
%$ catch
|
||||
%$ t(1) = 0;
|
||||
%$ end
|
||||
%$
|
||||
%$ % Instantiate a time series object.
|
||||
%$ if t(1)
|
||||
%$ t(2) = dyn_assert(ts.vobs,3);
|
||||
%$ t(3) = dyn_assert(ts.nobs,4);
|
||||
%$ t(4) = dyn_assert(ts.data,repmat(A,4,1),1e-15);
|
||||
%$ end
|
||||
%$ T = all(t);
|
||||
%@eof:21
|
Loading…
Reference in New Issue