From c3e06c70bcd0e737891d2f9da3dc6f28ecafe72d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Adjemian=20=28Charybdis=29?= Date: Thu, 10 Oct 2013 18:28:26 +0200 Subject: [PATCH] Added dynDates::lt method. Overloads < opterator. --- matlab/@dynDates/lt.m | 84 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 matlab/@dynDates/lt.m diff --git a/matlab/@dynDates/lt.m b/matlab/@dynDates/lt.m new file mode 100644 index 000000000..81c79cb50 --- /dev/null +++ b/matlab/@dynDates/lt.m @@ -0,0 +1,84 @@ +function C = lt(A,B) + +% Overloads the < operator for dynDates objects. +% +% INPUTS +% o A dynDates object with n or 1 elements. +% o B dynDates object with n or 1 elements. +% +% OUTPUTS +% o C column vector of max(n,1) elements (zeros or ones). + +% 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 ~isequal(nargin,2) + error('dynDates::lt: I need exactly two input arguments!') +end + +if ~isa(A,'dynDates') || ~isa(B,'dynDates') + error(['dynDates::lt: Input arguments ''' inputname(1) ''' and ''' inputname(2) ''' have to be a dynDates objects!']) +end + +if ~isequal(A.freq,B.freq) + C = 0; + return +end + +if isequal(A.ndat, B.ndat) + C = NaN(A.ndat,1); + for i=1:A.ndat + C(i) = compare_vectors(@lt, A.time(i,:), B.time(i,:)); + end +else + if isequal(A.ndat,1) && isequal(B.ndat,1) + C = compare_vectors(@lt, A.time, B.time); + elseif isequal(A.ndat,1) + C = NaN(B.ndat,1); + for i=1:B.ndat + C(i) = compare_vectors(@lt, A.time, B.time(i,:)); + end + elseif isequal(B.ndat,1) + C = NaN(A.ndat,1); + for i=1:A.ndat + C(i) = compare_vectors(@lt, A.time(i,:), B.time); + end + else + C = 0; + end +end + +%@test:1 +%$ % Define some dates +%$ B1 = '1945Q1'; +%$ B2 = '1945Q2'; +%$ B3 = '1945Q3'; +%$ B4 = '1945Q4'; +%$ B5 = '1950Q1'; +%$ +%$ % Create dynDates objects. +%$ dd = dynDates(B1,B2,B3,B4); +%$ +%$ % Check the results. +%$ t(1) = dyn_assert(dynDates(B1)