From c5005e6095e4a078a125d21c8efd9f1dc2460eb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Adjemian=20=28Charybdis=29?= <stephane.adjemian@univ-lemans.fr> Date: Sun, 8 Jun 2014 16:29:31 +0200 Subject: [PATCH] Added @dseries/remove method. --- matlab/@dseries/remove.m | 98 +++++++++++++++++++++++++++++++++++++++ matlab/@dseries/subsref.m | 2 +- 2 files changed, 99 insertions(+), 1 deletion(-) create mode 100644 matlab/@dseries/remove.m diff --git a/matlab/@dseries/remove.m b/matlab/@dseries/remove.m new file mode 100644 index 0000000000..db9690cfd6 --- /dev/null +++ b/matlab/@dseries/remove.m @@ -0,0 +1,98 @@ +function ts = remove(ts,a) % --*-- Unitary tests --*-- + +% Removes a variable from a dseries object (alias for the pop method). + +%@info: +%! @deftypefn {Function File} {@var{ts} =} pop (@var{ts}, @var{a}) +%! @anchor{dseries/pop} +%! @sp 1 +%! Remove method for the dseries class. Removes a variable from a dseries object. +%! @sp 2 +%! @strong{Inputs} +%! @sp 1 +%! @table @ @var +%! @item ts +%! Object instantiated by @ref{dseries}. +%! @item a +%! String, name of the variable to be removed. +%! @end table +%! @sp 2 +%! @strong{Outputs} +%! @sp 1 +%! @table @ @var +%! @item ts +%! Object instantiated by @ref{dseries}, without variable (@var{a}). +%! @end table +%! @end deftypefn +%@eod: + +% Copyright (C) 2014 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/>. + +ts = pop(ts, a); + +%@test:1 +%$ % Define a datasets. +%$ A = rand(10,3); +%$ +%$ % Define names +%$ A_name = {'A1';'A2';'A3'}; +%$ +%$ t = zeros(4,1); +%$ +%$ % Instantiate a time series object. +%$ try +%$ ts1 = dseries(A,[],A_name,[]); +%$ ts2 = remove(ts1,'A2'); +%$ t(1) = 1; +%$ catch +%$ t = 0; +%$ end +%$ +%$ if length(t)>1 +%$ t(2) = dyn_assert(ts2.vobs,2); +%$ t(3) = dyn_assert(ts2.nobs,10); +%$ t(4) = dyn_assert(ts2.data,[A(:,1), A(:,3)],1e-15); +%$ end +%$ T = all(t); +%@eof:1 + +%@test:2 +%$ % Define a datasets. +%$ A = rand(10,3); +%$ +%$ % Define names +%$ A_name = {'A1';'A2';'A3'}; +%$ +%$ t = zeros(4,1); +%$ +%$ % Instantiate a time series object. +%$ try +%$ ts1 = dseries(A,[],A_name,[]); +%$ ts2 = ts1.remove('A2'); +%$ t(1) = 1; +%$ catch +%$ t = 0; +%$ end +%$ +%$ if length(t)>1 +%$ t(2) = dyn_assert(ts2.vobs,2); +%$ t(3) = dyn_assert(ts2.nobs,10); +%$ t(4) = dyn_assert(ts2.data,[A(:,1), A(:,3)],1e-15); +%$ end +%$ T = all(t); +%@eof:2 \ No newline at end of file diff --git a/matlab/@dseries/subsref.m b/matlab/@dseries/subsref.m index d30c2142d3..f3713016ee 100644 --- a/matlab/@dseries/subsref.m +++ b/matlab/@dseries/subsref.m @@ -90,7 +90,7 @@ switch S(1).type else B = feval(S(1).subs,A); end - case {'cumsum','insert','pop','cumprod'} % Methods with less than three argument. + case {'cumsum','insert','pop','cumprod','remove'} % Methods with less than three argument. if length(S)>1 && isequal(S(2).type,'()') if isempty(S(2).subs) B = feval(S(1).subs,A); -- GitLab