diff --git a/matlab/@dynSeries/dynSeries.m b/matlab/@dynSeries/dynSeries.m index 09e4eee2d..92d357468 100644 --- a/matlab/@dynSeries/dynSeries.m +++ b/matlab/@dynSeries/dynSeries.m @@ -125,13 +125,18 @@ switch nargin ts.vobs = length(varlist); ts.nobs = size(data,1); if isempty(tex) - ts.tex = cell(ts.vobs,1); - for i=1:ts.vobs - ts.tex(i) = {name2tex(varlist{i})}; - end + ts.tex = name2tex(varlist); else - ts.tex = tex; + ts.tex = tex; end + elseif isnumeric(varargin{1}) && isequal(ndims(varargin{1}),2) + ts.data = varargin{1}; + [ts.nobs, ts.vobs] = size(ts.data); + ts.freq = 1; + ts.init = dynDate(1); + ts.time = ts.init:ts.init+ts.nobs; + ts.name = default_name(ts.vobs); + ts.tex = name2tex(ts.name); end case {2,3,4} a = varargin{1}; @@ -178,9 +183,7 @@ switch nargin error('dynSeries::dynSeries: The number of declared names does not match the number of variables!') end else - for i=1:ts.vobs - ts.name = vertcat(ts.name, {['Variable_' int2str(i)]}); - end + ts.name = default_name(ts.vobs); end if ~isempty(d) if ts.vobs==length(d) @@ -191,9 +194,7 @@ switch nargin error('dynSeries::dynSeries: The number of declared tex names does not match the number of variables!') end else - for i=1:ts.vobs - ts.tex = vertcat(ts.tex, {name2tex(ts.name{i})}); - end + ts.tex = name2tex(ts.name); end otherwise error('dynSeries::dynSeries: Can''t instantiate the class, wrong calling sequence!') diff --git a/matlab/@dynSeries/private/default_name.m b/matlab/@dynSeries/private/default_name.m new file mode 100644 index 000000000..1711195c4 --- /dev/null +++ b/matlab/@dynSeries/private/default_name.m @@ -0,0 +1,27 @@ +function names = default_name(dim) + +% 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 . + + +names = {}; +for i=1:dim + names = vertcat(names, {['Variable_' int2str(i)]}); +end + + + diff --git a/matlab/evaluate_smoother.m b/matlab/evaluate_smoother.m index 474deaa65..32f58a280 100644 --- a/matlab/evaluate_smoother.m +++ b/matlab/evaluate_smoother.m @@ -1,4 +1,4 @@ -function evaluate_smoother(parameters,var_list) +function oo_=evaluate_smoother(parameters,var_list) % Evaluate the smoother at parameters. % % INPUTS diff --git a/matlab/graph_decomp.m b/matlab/graph_decomp.m index f69c8d833..33240cf6e 100644 --- a/matlab/graph_decomp.m +++ b/matlab/graph_decomp.m @@ -41,8 +41,8 @@ for j=1:nvar end fhandle = dyn_figure(DynareOptions,'Name',['Shock decomposition: ',endo_names(i_var(j),:)]); ax=axes('Position',[0.1 0.1 0.6 0.8]); - axis(ax,[xmin xmax ymin ymax]); plot(ax,x(2:end),z1(end,:),'k-','LineWidth',2) + axis(ax,[xmin xmax ymin ymax]); hold on; for i=1:gend i_1 = i-1; diff --git a/matlab/name2tex.m b/matlab/name2tex.m deleted file mode 100644 index ed8b259e5..000000000 --- a/matlab/name2tex.m +++ /dev/null @@ -1,103 +0,0 @@ -function tex = name2tex(name, info) -% Converts plain text name into tex name. - -% 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 - info = 0; -end - -id = findstr('_',name); -if isempty(id) - tex = name; - return -end - -if info - tex = name; - n = length(id); - if id(1)==1 - tex = ['\_', tex(2:end)]; - if n>1 - id = id(2:end)+1; - n = n-1; - else - return - end - end - if id(end)==length(tex) - tex = [tex(1:end-1) '\_']; - if n>1 - id = id(1:end-1); - n = n-1; - else - return - end - end - if n==1 - tex = [ tex(1:(id-1)) '_{' tex((id+1):end) '}' ]; - return - else - for i=1:n-1 - tex = [tex(1:id(1)-1) '\_' tex((id(1)+1):end)]; - id = id(2:end)+1; - end - tex = [tex(1:(id-1)) '_{' tex((id+1):end) '}']; - end -else - tex = strrep(name, '_', '\_'); -end - -%@test:1 -%$ t = zeros(16,1); -%$ t1 = name2tex('_azert'); -%$ t2 = name2tex('azert_'); -%$ t3 = name2tex('_azert_'); -%$ t4 = name2tex('azert_uiop'); -%$ t5 = name2tex('azert_uiop_qsdfg'); -%$ t6 = name2tex('azert_uiop_qsdfg_'); -%$ t7 = name2tex('_azert_uiop_qsdfg'); -%$ t8 = name2tex('_azert_uiop_qsdfg_'); -%$ t11 = name2tex('_azert',1); -%$ t12 = name2tex('azert_',1); -%$ t13 = name2tex('_azert_',1); -%$ t14 = name2tex('azert_uiop',1); -%$ t15 = name2tex('azert_uiop_qsdfg',1); -%$ t16 = name2tex('azert_uiop_qsdfg_',1); -%$ t17 = name2tex('_azert_uiop_qsdfg',1); -%$ t18 = name2tex('_azert_uiop_qsdfg_',1); -%$ -%$ t(1) = dyn_assert(strcmp(t1,'\\_azert'),1); -%$ t(2) = dyn_assert(strcmp(t2,'azert\\_'),1); -%$ t(3) = dyn_assert(strcmp(t3,'\\_azert\\_'),1); -%$ t(4) = dyn_assert(strcmp(t4,'azert\\_uiop'),1); -%$ t(5) = dyn_assert(strcmp(t5,'azert\\_uiop\\_qsdfg'),1); -%$ t(6) = dyn_assert(strcmp(t6,'azert\\_uiop\\_qsdfg\\_'),1); -%$ t(7) = dyn_assert(strcmp(t7,'\\_azert\\_uiop\\_qsdfg'),1); -%$ t(8) = dyn_assert(strcmp(t8,'\\_azert\\_uiop\\_qsdfg\\_'),1); -%$ t(9) = dyn_assert(strcmp(t11,'\\_azert'),1); -%$ t(10) = dyn_assert(strcmp(t12,'azert\\_'),1); -%$ t(11) = dyn_assert(strcmp(t13,'\\_azert\\_'),1); -%$ t(12) = dyn_assert(strcmp(t14,'azert_{uiop}'),1); -%$ t(13) = dyn_assert(strcmp(t15,'azert\\_uiop_{qsdfg}'),1); -%$ t(14) = dyn_assert(strcmp(t16,'azert\\_uiop_{qsdfg\\_}'),1); -%$ t(15) = dyn_assert(strcmp(t17,'\\_azert\\_uiop_{qsdfg}'),1); -%$ t(16) = dyn_assert(strcmp(t18,'\\_azert\\_uiop_{qsdfg\\_}'),1); -%$ -%$ T = all(t); -%@eof:1 \ No newline at end of file diff --git a/matlab/utilities/general/name2tex.m b/matlab/utilities/general/name2tex.m new file mode 100644 index 000000000..082828fe7 --- /dev/null +++ b/matlab/utilities/general/name2tex.m @@ -0,0 +1,217 @@ +function tex = name2tex(name, info) +% Converts plain text name into tex name. + +% 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 + info = 0; +end + +if iscell(name) + nn = length(name); + id = findstr(cell2mat(transpose(name)),'_'); +else + nn = 1; + id = findstr(name,'_'); +end + +if isempty(id) + tex = name; + return +end + +if iscell(name) + tex = cell(nn,1); +end + +for i=1:nn + if info + if iscell(name) + tex(i) = {name{i}}; + id = findstr(name{i},'_'); + len = length(tex{i}); + else + tex = name; + id = findstr(name,'_'); + len = length(tex); + end + n = length(id); + if id(1)==1 + if iscell(name) + tex(i) = {['\_', tex{i}(2:end)]}; + else + tex = ['\_', tex(2:end)]; + end + if n>1 + id = id(2:end)+1; + n = n-1; + len = len+1; + else + continue + end + end + if id(end)==len + if iscell(name) + tex(i) = {[tex{i}(1:end-1) '\_']}; + else + tex = [tex(1:end-1) '\_']; + end + if n>1 + id = id(1:end-1); + n = n-1; + else + continue + end + end + if n==1 + if iscell(name) + tex(i) = {[ tex{i}(1:(id-1)) '_{' tex{i}((id+1):end) '}' ]}; + else + tex = [ tex(1:(id-1)) '_{' tex((id+1):end) '}' ]; + end + continue + else + for j=1:n-1 + if iscell(name) + tex(i) = {[tex{i}(1:id(j)-1) '\_' tex{i}((id(j)+1):end)]}; + else + tex = [tex(1:id(j)-1) '\_' tex((id(j)+1):end)]; + end + id = id(2:end)+1; + end + if iscell(name) + tex(i) = {[tex{i}(1:(id-1)) '_{' tex{i}((id+1):end) '}']}; + else + tex = [tex(1:(id-1)) '_{' tex((id+1):end) '}']; + end + end + else + if iscell(name) + tex(i) = {strrep(name{i}, '_', '\_')}; + else + tex = strrep(name, '_', '\_'); + end + end +end + +%@test:1 +%$ t = zeros(16,1); +%$ t1 = name2tex('_azert'); +%$ t2 = name2tex('azert_'); +%$ t3 = name2tex('_azert_'); +%$ t4 = name2tex('azert_uiop'); +%$ t5 = name2tex('azert_uiop_qsdfg'); +%$ t6 = name2tex('azert_uiop_qsdfg_'); +%$ t7 = name2tex('_azert_uiop_qsdfg'); +%$ t8 = name2tex('_azert_uiop_qsdfg_'); +%$ t11 = name2tex('_azert',1); +%$ t12 = name2tex('azert_',1); +%$ t13 = name2tex('_azert_',1); +%$ t14 = name2tex('azert_uiop',1); +%$ t15 = name2tex('azert_uiop_qsdfg',1); +%$ t16 = name2tex('azert_uiop_qsdfg_',1); +%$ t17 = name2tex('_azert_uiop_qsdfg',1); +%$ t18 = name2tex('_azert_uiop_qsdfg_',1); +%$ +%$ t(1) = dyn_assert(strcmp(t1,'\\_azert'),1); +%$ t(2) = dyn_assert(strcmp(t2,'azert\\_'),1); +%$ t(3) = dyn_assert(strcmp(t3,'\\_azert\\_'),1); +%$ t(4) = dyn_assert(strcmp(t4,'azert\\_uiop'),1); +%$ t(5) = dyn_assert(strcmp(t5,'azert\\_uiop\\_qsdfg'),1); +%$ t(6) = dyn_assert(strcmp(t6,'azert\\_uiop\\_qsdfg\\_'),1); +%$ t(7) = dyn_assert(strcmp(t7,'\\_azert\\_uiop\\_qsdfg'),1); +%$ t(8) = dyn_assert(strcmp(t8,'\\_azert\\_uiop\\_qsdfg\\_'),1); +%$ t(9) = dyn_assert(strcmp(t11,'\\_azert'),1); +%$ t(10) = dyn_assert(strcmp(t12,'azert\\_'),1); +%$ t(11) = dyn_assert(strcmp(t13,'\\_azert\\_'),1); +%$ t(12) = dyn_assert(strcmp(t14,'azert_{uiop}'),1); +%$ t(13) = dyn_assert(strcmp(t15,'azert\\_uiop_{qsdfg}'),1); +%$ t(14) = dyn_assert(strcmp(t16,'azert\\_uiop_{qsdfg\\_}'),1); +%$ t(15) = dyn_assert(strcmp(t17,'\\_azert\\_uiop_{qsdfg}'),1); +%$ t(16) = dyn_assert(strcmp(t18,'\\_azert\\_uiop_{qsdfg\\_}'),1); +%$ +%$ T = all(t); +%@eof:1 + +%@test:2 +%$ t = zeros(16,1); +%$ t1 = name2tex({'_azert'}); +%$ t2 = name2tex({'azert_'}); +%$ t3 = name2tex({'_azert_'}); +%$ t4 = name2tex({'azert_uiop'}); +%$ t5 = name2tex({'azert_uiop_qsdfg'}); +%$ t6 = name2tex({'azert_uiop_qsdfg_'}); +%$ t7 = name2tex({'_azert_uiop_qsdfg'}); +%$ t8 = name2tex({'_azert_uiop_qsdfg_'}); +%$ t11 = name2tex({'_azert'},1); +%$ t12 = name2tex({'azert_'},1); +%$ t13 = name2tex({'_azert_'},1); +%$ t14 = name2tex({'azert_uiop'},1); +%$ t15 = name2tex({'azert_uiop_qsdfg'},1); +%$ t16 = name2tex({'azert_uiop_qsdfg_'},1); +%$ t17 = name2tex({'_azert_uiop_qsdfg'},1); +%$ t18 = name2tex({'_azert_uiop_qsdfg_'},1); +%$ +%$ t(1) = dyn_assert(t1,{'\\_azert'}); +%$ t(2) = dyn_assert(t2,{'azert\\_'}); +%$ t(3) = dyn_assert(t3,{'\\_azert\\_'}); +%$ t(4) = dyn_assert(t4,{'azert\\_uiop'}); +%$ t(5) = dyn_assert(t5,{'azert\\_uiop\\_qsdfg'}); +%$ t(6) = dyn_assert(t6,{'azert\\_uiop\\_qsdfg\\_'}); +%$ t(7) = dyn_assert(t7,{'\\_azert\\_uiop\\_qsdfg'}); +%$ t(8) = dyn_assert(t8,{'\\_azert\\_uiop\\_qsdfg\\_'}); +%$ t(9) = dyn_assert(t11,{'\\_azert'}); +%$ t(10) = dyn_assert(t12,{'azert\\_'}); +%$ t(11) = dyn_assert(t13,{'\\_azert\\_'}); +%$ t(12) = dyn_assert(t14,{'azert_{uiop}'}); +%$ t(13) = dyn_assert(t15,{'azert\\_uiop_{qsdfg}'}); +%$ t(14) = dyn_assert(t16,{'azert\\_uiop_{qsdfg\\_}'}); +%$ t(15) = dyn_assert(t17,{'\\_azert\\_uiop_{qsdfg}'}); +%$ t(16) = dyn_assert(t18,{'\\_azert\\_uiop_{qsdfg\\_}'}); +%$ +%$ T = all(t); +%@eof:2 + +%@test:3 +%$ t = zeros(4,1); +%$ try +%$ t1 = name2tex({'_azert';'azert_';'_azert_';'azert_uiop';'azert_uiop_qsdfg';'azert_uiop_qsdfg_'}); +%$ t(1) = 1; +%$ catch +%$ % Nothing to do here. +%$ end +%$ +%$ if t(1) +%$ try +%$ t2 = name2tex({'_azert';'azert_';'_azert_';'azert_uiop';'azert_uiop_qsdfg';'azert_uiop_qsdfg_'},1); +%$ t(2) = 1; +%$ catch +%$ % Nothing to do here. +%$ end +%$ end +%$ +%$ if t(1) +%$ t(3) = dyn_assert(t1,{'\\_azert';'azert\\_';'\\_azert\\_';'azert\\_uiop';'azert\\_uiop\\_qsdfg';'azert\\_uiop\\_qsdfg\\_'}); +%$ end +%$ +%$ if t(2) +%$ t(4) = dyn_assert(t2,{'\\_azert';'azert\\_';'\\_azert\\_';'azert_{uiop}';'azert\\_uiop_{qsdfg}';'azert\\_uiop_{qsdfg\\_}'}); +%$ end +%$ +%$ T = all(t); +%@eof:3 \ No newline at end of file