diff --git a/matlab/@dynSeries/isequal.m b/matlab/@dynSeries/isequal.m new file mode 100644 index 000000000..7bfcacb4e --- /dev/null +++ b/matlab/@dynSeries/isequal.m @@ -0,0 +1,65 @@ +function C = isequal(A,B) + +% Overloads ne (~=) operator. +% +% INPUTS +% o A dynSeries object (T periods, N variables). +% o B dynSeries object (T periods, N variables). +% +% OUTPUTS +% o C Integer scalar equal to zero or one. + +% 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 . + +if nargin~=2 + error('dynSeries::eq: I need exactly two input arguments!') +end + +if ~(isa(A,'dynSeries') && isa(B,'dynSeries')) + error('dynSeries::eq: Both input arguments must be dynSeries objects!') +end + +if ~isequal(A.nobs,B.nobs) + C = 0; + return +end + +if ~isequal(A.vobs,B.vobs) + C = 0; + return +end + +if ~isequal(A.freq,B.freq) + C = 0; + return +end + +if ~isequal(A.init,B.init) + C = 0; + return +end + +if ~isequal(A.name,B.name) + warning('dynSeries::eq: Both input arguments do not have the same variables!') +end + +if ~isequal(A.tex,B.tex) + warning('dynSeries::eq: Both input arguments do not have the same tex names!') +end + +C = isequal(A.data, B.data); \ No newline at end of file diff --git a/matlab/@dynSeries/ne.m b/matlab/@dynSeries/ne.m new file mode 100644 index 000000000..877086128 --- /dev/null +++ b/matlab/@dynSeries/ne.m @@ -0,0 +1,100 @@ +function C = ne(A,B) % --*-- Unitary tests --*-- + +% Overloads ne (~=) operator. +% +% INPUTS +% o A dynSeries object (T periods, N variables). +% o B dynSeries object (T periods, N variables). +% +% OUTPUTS +% o C T*N matrix of zeros and ones. Element C(t,n) is nonzero iff observation t of variable n in A and B are different. +% +% REMARKS +% If the number of variables, the number of observations or the frequencies are different in A and B, the function returns one. + +% 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 . + +if nargin~=2 + error('dynSeries::ne: I need exactly two input arguments!') +end + +if ~(isa(A,'dynSeries') && isa(B,'dynSeries')) + error('dynSeries::ne: Both input arguments must be dynSeries objects!') +end + +if ~isequal(A.nobs,B.nobs) + warning('dynSeries::eq: Both input arguments should have the same number of observations!') + C = 1; + return +end + +if ~isequal(A.vobs,B.vobs) + warning('dynSeries::eq: Both input arguments should have the same number of observations!') + C = 1; + return +end + +if ~isequal(A.freq,B.freq) + warning('dynSeries::eq: Both input arguments should have the same frequencies!') + C = 1; + return +end + +if ~isequal(A.init,B.init) + warning('dynSeries::eq: Both input arguments should have the same initial period!') + C = 1; + return +end + +if ~isequal(A.name,B.name) + warning('dynSeries::eq: Both input arguments do not have the same variables!') +end + +if ~isequal(A.tex,B.tex) + warning('dynSeries::eq: Both input arguments do not have the same tex names!') +end + +C = ne(A.data, B.data); + +%@test:1 +%$ % Define a datasets. +%$ A = rand(10,3); +%$ B = A; +%$ B(:,3) = rand(10,1); +%$ +%$ % Define names +%$ A_name = {'A1';'A2';'A3'}; B_name = A_name; +%$ +%$ t = zeros(2,1); +%$ +%$ % Instantiate a time series object. +%$ try +%$ ts1 = dynSeries(A,[],A_name,[]); +%$ ts2 = dynSeries(B,[],B_name,[]); +%$ ts2 = ts1; +%$ a = eq(ts1,ts2); +%$ t(1) = 1; +%$ catch +%$ t = 0; +%$ end +%$ +%$ if length(t)>1 +%$ t(2) = dyn_assert(a,[ones(10,2), ones(10,1)]); +%$ end +%$ T = all(t); +%@eof:1 \ No newline at end of file