Introduce new syntax for shifting backward or forward a dynSeries object.
Suppose that ts is a dynSeries object and let t = dynTimeIndex(); Then us = ts.lag(); <=> us = ts(t-1); us = ts.lag(2); <=> us = ts(t-2); us = ts.lead(); <=> us = ts(t+1); Added corresponding unitary test.time-shift
parent
fecb61421f
commit
f4c01a43bc
|
@ -151,6 +151,17 @@ switch S(1).type
|
||||||
else
|
else
|
||||||
error(['dynSeries::subsref: dynSeries object ''' inputname(1) ''' is not empty!'])
|
error(['dynSeries::subsref: dynSeries object ''' inputname(1) ''' is not empty!'])
|
||||||
end
|
end
|
||||||
|
elseif isa(S(1).subs{1},'dynTimeIndex')
|
||||||
|
% shift backward/forward (lag/lead) dynSeries object
|
||||||
|
shift = S(1).subs{1}.index;
|
||||||
|
if shift>0
|
||||||
|
B = feval('lead',A,shift);
|
||||||
|
elseif shift<0
|
||||||
|
B = feval('lag',A,-shift);
|
||||||
|
else
|
||||||
|
% Do nothing.
|
||||||
|
B = A;
|
||||||
|
end
|
||||||
elseif isa(S(1).subs{1},'dynDates')
|
elseif isa(S(1).subs{1},'dynDates')
|
||||||
% Extract a subsample using a dynDates object
|
% Extract a subsample using a dynDates object
|
||||||
[junk,tdx] = intersect(A.time.time,S(1).subs{1}.time,'rows');
|
[junk,tdx] = intersect(A.time.time,S(1).subs{1}.time,'rows');
|
||||||
|
@ -532,3 +543,25 @@ end
|
||||||
%$
|
%$
|
||||||
%$ T = all(t);
|
%$ T = all(t);
|
||||||
%@eof:12
|
%@eof:12
|
||||||
|
|
||||||
|
%@test:13
|
||||||
|
%$ try
|
||||||
|
%$ data = transpose(0:1:50);
|
||||||
|
%$ ts = dynSeries(data,'1950Q1');
|
||||||
|
%$ a = ts.lag;
|
||||||
|
%$ b = ts.lead;
|
||||||
|
%$ tt = dynTimeIndex();
|
||||||
|
%$ c = ts(tt-1);
|
||||||
|
%$ d = ts(tt+1);
|
||||||
|
%$ t(1) = 1;
|
||||||
|
%$ catch
|
||||||
|
%$ t(1) = 0;
|
||||||
|
%$ end
|
||||||
|
%$
|
||||||
|
%$ if t(1)>1
|
||||||
|
%$ t(2) = (a==c);
|
||||||
|
%$ t(3) = (b==d);
|
||||||
|
%$ end
|
||||||
|
%$
|
||||||
|
%$ T = all(t);
|
||||||
|
%@eof:13
|
Loading…
Reference in New Issue