function [a,b] = align(a, b) % --*-- Unitary tests --*-- %@info: %! @deftypefn {Function File} {[@var{a}, @var{b}] =} align (@var{a}, @var{b}) %! @anchor{dseries/align} %! @sp 1 %! If dseries objects @var{a} and @var{b} are defined on different time ranges, extend @var{a} and/or %! @var{b} with NaNs so that they are defined on the same time range. %! @sp 2 %! @strong{Inputs} %! @sp 1 %! @table @ @var %! @item a %! Object instantiated by @ref{dseries}. %! @item b %! Object instantiated by @ref{dseries}. %! @end table %! @sp 2 %! @strong{Outputs} %! @sp 1 %! @table @ @var %! @item a %! Object instantiated by @ref{dseries}. %! @item b %! Object instantiated by @ref{dseries}. %! @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 . if ~isequal(a.freq,b.freq) error(['dseries::align: ''' inputname(1) ''' and ''' inputname(2) ''' dseries objects must have common frequencies!']) end init = min(a.init,b.init); time_range_of_a = a.init:a.init+a.nobs; time_range_of_b = b.init:b.init+b.nobs; last_a = time_range_of_a(a.nobs); last_b = time_range_of_b(b.nobs); common_time_range = intersect(time_range_of_a,time_range_of_b); if isempty(common_time_range) error(['dseries::align: ''' inputname(1) ''' and ''' inputname(2) ''' dseries object must have at least one common date!']) end if a.initb.init n = a.init-b.init; a.data = [NaN(n,a.vobs); a.data]; a.nobs = a.nobs+n; a.init = init; end if last_a>last_b n = last_a-last_b; b.data = [b.data; NaN(n,b.vobs)]; b.nobs = b.nobs+n; elseif last_a