diff --git a/src/@dseries/diff.m b/src/@dseries/diff.m new file mode 100644 index 0000000000000000000000000000000000000000..80ca080c58ac2c682195319fd97712fb4b07b4a0 --- /dev/null +++ b/src/@dseries/diff.m @@ -0,0 +1,49 @@ +function o = diff(o) % --*-- Unitary tests --*-- + +% Computes differences. +% +% INPUTS +% - o [dseries] +% +% OUTPUTS +% - o [dseries] + +% Copyright (C) 2017 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/>. + +o = copy(o); +o.diff_(); + +%@test:1 +%$ try +%$ data = transpose(0:1:50); +%$ ts = dseries(data,'1950Q1'); +%$ ds = ts.diff(); +%$ t(1) = 1; +%$ catch +%$ t(1) = 0; +%$ end +%$ +%$ if t(1) +%$ DATA = NaN(1,ds.vobs); +%$ DATA = [DATA; ones(ds.nobs-1,ds.vobs)]; +%$ t(2) = dassert(ds.data, DATA, 1e-15); +%$ t(3) = dassert(ts.data, data, 1e-15); +%$ end +%$ +%$ T = all(t); +%@eof:1 \ No newline at end of file diff --git a/src/@dseries/diff_.m b/src/@dseries/diff_.m new file mode 100644 index 0000000000000000000000000000000000000000..551fe23ce57215a19ae8637a249dc4d980e23e1e --- /dev/null +++ b/src/@dseries/diff_.m @@ -0,0 +1,56 @@ +function o = diff_(o) % --*-- Unitary tests --*-- + +% Computes differences, independently of the frequency. +% +% INPUTS +% - o [dseries] +% +% OUTPUTS +% - o [dseries] + +% Copyright (C) 2017 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/>. + +o.data(2:end,:) = o.data(2:end,:)-o.data(1:end-1,:); +o.data(1,:) = NaN; + +for i = 1:vobs(o) + if isempty(o.ops{i}) + o.ops(i) = {['diff(' o.name{i} ')']}; + else + o.ops(i) = {['diff(' o.ops{i} ')']}; + end +end + +%@test:1 +%$ try +%$ data = transpose(0:1:50); +%$ ts = dseries(data,'1950Q1'); +%$ ts.diff_; +%$ t(1) = 1; +%$ catch +%$ t(1) = 0; +%$ end +%$ +%$ if t(1) +%$ DATA = NaN(1,ts.vobs); +%$ DATA = [DATA; ones(ts.nobs-1,ts.vobs)]; +%$ t(2) = dassert(ts.data,DATA,1e-15); +%$ end +%$ +%$ T = all(t); +%@eof:1 \ No newline at end of file diff --git a/src/@dseries/subsref.m b/src/@dseries/subsref.m index 9f6f47f55b7a946cfeeeb888be6a2933b7d8e2eb..23ee9f4f10c02e8383b1e22103f1dd2db17850e9 100644 --- a/src/@dseries/subsref.m +++ b/src/@dseries/subsref.m @@ -132,6 +132,7 @@ switch S(1).type 'qgrowth','qgrowth_', ... 'ydiff','ydiff_', ... 'qdiff','qdiff_', ... + 'diff', 'diff_', ... 'abs','abs_', ... 'isnan', ... 'firstdate', ...