diff --git a/matlab/@dynSeries/lag.m b/matlab/@dynSeries/lag.m new file mode 100644 index 0000000000000000000000000000000000000000..918510af1ef5d1ca466dcbfe68206f60c89621e7 --- /dev/null +++ b/matlab/@dynSeries/lag.m @@ -0,0 +1,81 @@ +function us = lag(ts,p) + +%@info: +%! @deftypefn {Function File} {@var{us} =} lag (@var{ts}) +%! @anchor{lag} +%! @sp 1 +%! Computes lagged time series. +%! @sp 2 +%! @strong{Inputs} +%! @sp 1 +%! @table @var +%! @item ts +%! Dynare time series object, instantiated by @ref{dynSeries} +%! @end table +%! @sp 2 +%! @strong{Outputs} +%! @sp 1 +%! @table @var +%! @item us +%! Dynare time series object with transformed data field. +%! @end table +%! @end deftypefn +%@eod: + +% Copyright (C) 2013 Dynare Team +% +% This file is part of Dynare. +% +% Dynare is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% Dynare is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with Dynare. If not, see <http://www.gnu.org/licenses/>. + +% Set default number of lags +if nargin<2 + p = 1; +end + +% Copy of ts dynSeries object +us = ts; + +% Update data member +us.data = [NaN(p,ts.vobs); ts.data(1:end-p,:)]; + +for i=1:ts.vobs + us.name(i) = {[ 'lag(' ts.name{i} ',' int2str(p) ')']}; + us.tex(i) = {[ ts.tex{i} '_{-' int2str(p) '}']}; +end + +%@test:1 +%$ t = zeros(4,1); +%$ +%$ try +%$ data = transpose(0:1:50); +%$ ts = dynSeries(data,'1950Q1'); +%$ a = ts.lag; +%$ b = ts.lag.lag; +%$ c = lag(ts,2); +%$ t(1) = 1; +%$ catch +%$ t = 0; +%$ end +%$ +%$ if length(t)>1 +%$ DATA = [NaN(1,ts.vobs); transpose(0:1:49)]; +%$ t(2) = dyn_assert(a.data,DATA,1e-15); +%$ DATA = [NaN(2,ts.vobs); transpose(0:1:48)]; +%$ t(3) = dyn_assert(b.data,DATA,1e-15); +%$ t(4) = dyn_assert(b.data,c.data,1e-15); +%$ end +%$ +%$ T = all(t); +%@eof:1b \ No newline at end of file diff --git a/matlab/@dynSeries/subsref.m b/matlab/@dynSeries/subsref.m index 3019617dc3c65307127d941799f51e284e027315..249cdbee56aaf841a9921dc3d1f69954a8001a47 100644 --- a/matlab/@dynSeries/subsref.m +++ b/matlab/@dynSeries/subsref.m @@ -66,7 +66,7 @@ switch S(1).type switch S(1).subs case {'data','nobs','vobs','name','tex','freq','time','init'} % Public members. B = builtin('subsref', A, S(1)); - case {'log','exp','ygrowth','qgrowth','ydiff','qdiff'} % Give "dot access" to public methods. + case {'log','exp','ygrowth','qgrowth','ydiff','qdiff','lag'} % Give "dot access" to public methods. B = feval(S(1).subs,A); case {'save'} % Save dynSeries object on disk (default is a csv file). B = NaN;