From f8203911c8dd0b1fdfc7c13d596c944e5644c08e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Adjemian=20=28Charybdis=29?= Date: Thu, 15 May 2014 15:37:14 +0200 Subject: [PATCH] Added two columns to leadlagtable cell array (vectors of lag/lead orders). --- matlab/utilities/dseries/from.m | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/matlab/utilities/dseries/from.m b/matlab/utilities/dseries/from.m index 724700adc..49360fe57 100644 --- a/matlab/utilities/dseries/from.m +++ b/matlab/utilities/dseries/from.m @@ -70,7 +70,12 @@ variables = unique(regexpi(EXPRESSION, '\w*\(t\)|\w*\(t\-\d\)|\w*\(t\+\d\)','mat % Column 2: Maximum lag order. % Column 3: Equal to 1 if the variable appears at the current period, 0 otherwise. % Column 4: Maximum lead order. -leadlagtable = cell(0,4); +% Column 5: Vector of effective lag orders. +% Column 6: Vector of effective lead orders. +% +% Initialization. +leadlagtable = cell(0,6); +% Loop over the variables (dseries objects). for i=1:length(variables) current = ~isempty(regexpi(variables{i},'\(t\)')); lag = ~isempty(regexpi(variables{i},'\(t\-\d\)')); @@ -87,35 +92,44 @@ for i=1:length(variables) end if lag tmp = regexpi(index,'\d','match'); - leadlagtable(1,2) = {str2num(tmp{1})}; + leadlagtable(1,2) = {str2double(tmp{1})}; + leadlagtable(1,5) = {str2double(tmp{1})}; else leadlagtable(1,2) = {0}; + leadlagtable(1,5) = {[]}; end if lead tmp = regexpi(index,'\d','match'); - leadlagtable(1,4) = {str2num(tmp{1})}; + leadlagtable(1,4) = {str2double(tmp{1})}; + leadlagtable(1,6) = {str2double(tmp{1})}; else leadlagtable(1,4) = {0}; + leadlagtable(1,6) = {[]}; end else linea = strmatch(variables{i},leadlagtable(:,1)); if isempty(linea) + % This is a new variable! linea = size(leadlagtable,1)+1; leadlagtable(linea,1) = {variables{i}}; leadlagtable(linea,2) = {0}; leadlagtable(linea,3) = {0}; leadlagtable(linea,4) = {0}; + leadlagtable(linea,5) = {[]}; + leadlagtable(linea,6) = {[]}; end if current leadlagtable(linea,3) = {1}; end if lag tmp = regexpi(index,'\d','match'); - leadlagtable(linea,2) = {max(str2num(tmp{1}),leadlagtable{linea,2})}; + leadlagtable(linea,2) = {max(str2double(tmp{1}),leadlagtable{linea,2})}; + leadlagtable(linea,5) = {sortrows([leadlagtable{linea,5}; str2double(tmp{1})])}; end if lead tmp = regexpi(index,'\d','match'); - leadlagtable(linea,4) = {max(str2num(tmp{1}),leadlagtable{linea,4})}; + leadlagtable(linea,4) = {max(str2double(tmp{1}),leadlagtable{linea,4})}; + leadlagtable(linea,6) = {sortrows([leadlagtable{linea,6}; str2double(tmp{1})])}; end end end