diff --git a/matlab/McMCDiagnostics.m b/matlab/McMCDiagnostics.m
index 0e439542621aa875fdc3f936ec3fa5634a2cc99e..a08669ca0727678151fa11a05cd0329433f8de2f 100644
--- a/matlab/McMCDiagnostics.m
+++ b/matlab/McMCDiagnostics.m
@@ -137,10 +137,6 @@ for i = 1:pages
         h = figure('Name','MCMC univariate diagnostic (Brooks and Gelman,1998)');
     end    
     boxplot = 1;
-    if TeX
-        NAMES = [];
-        TEXNAMES = [];
-    end
     for j = 1:3 % Loop over parameters
         k = k+1;
         [nam,namtex] = get_the_name(k,TeX);
@@ -159,8 +155,13 @@ for i = 1:pages
                 namnam  = [nam , ' (m3)'];
             end
             if TeX
-                NAMES = strvcat(NAMES,deblank(namnam));
-                TEXNAMES = strvcat(TEXNAMES,deblank(namtex));
+                if j==1
+                    NAMES = deblank(namnam);
+                    TEXNAMES = deblank(namtex);
+                else
+                    NAMES = char(NAMES,deblank(namnam));
+                    TEXNAMES = char(TEXNAMES,deblank(namtex));
+                end
             end
             subplot(3,3,boxplot);
             plot(xx,plt1,'-b');     % Pooled
@@ -205,10 +206,6 @@ if reste
         nr = 2;
         nc = 3;
     end
-    if TeX
-        NAMES = [];
-        TEXNAMES = [];
-    end
     if options_.nograph
         h = figure('Name','MCMC univariate diagnostic (Brooks and Gelman, 1998)','Visible','off');
     else
@@ -233,8 +230,13 @@ if reste
                 namnam  = [nam , ' (m3)'];
             end
             if TeX
-                NAMES = strvcat(NAMES,deblank(namnam));
-                TEXNAMES = strvcat(TEXNAMES,deblank(namtex));
+                if j==1
+                    NAMES = deblank(namnam);
+                    TEXNAMES = deblank(namtex);
+                else
+                    NAMES = char(NAMES,deblank(namnam));
+                    TEXNAMES = char(TEXNAMES,deblank(namtex));
+                end
             end
             subplot(nr,nc,boxplot);
             plot(xx,plt1,'-b');                                 % Pooled
@@ -287,7 +289,6 @@ if TeX
     fprintf(fidTeX,'%% TeX eps-loader file generated by McmcDiagnostics.m (Dynare).\n');
     fprintf(fidTeX,['%% ' datestr(now,0) '\n']);
     fprintf(fidTeX,' \n');
-    NAMES = [];
 end
 tmp = zeros(NumberOfDraws*nblck,3);
 MDIAG = zeros(NumberOfLines,6);
@@ -352,7 +353,11 @@ for crit = 1:3
         namnam  = 'm3';
     end
     if TeX
-        NAMES = strvcat(NAMES,namnam);
+        if crit == 1
+            NAMES = deblank(namnam);
+        else
+            NAMES = char(NAMES,deblank(namnam));
+        end
     end
     subplot(3,1,boxplot);
     plot(xx,plt1,'-b');  % Pooled
diff --git a/matlab/PlotPosteriorDistributions.m b/matlab/PlotPosteriorDistributions.m
index f2ba50439f8f8e58786a5706136ddbcc8bddb0ec..be900083a3276014939754fb2e4695b18e1d65bd 100644
--- a/matlab/PlotPosteriorDistributions.m
+++ b/matlab/PlotPosteriorDistributions.m
@@ -16,7 +16,7 @@ function oo_ = PlotPosteriorDistributions(estim_params_, M_, options_, bayestopt
 % SPECIAL REQUIREMENTS
 %    none
 
-% Copyright (C) 2005-2008 Dynare Team
+% Copyright (C) 2005-2010 Dynare Team
 %
 % This file is part of Dynare.
 %
@@ -69,16 +69,17 @@ for i=1:npar
             hfig = figure('Name',figurename);
         end
     end
+    [nam,texnam] = get_the_name(i,TeX);
     if subplotnum == 1
+        NAMES = nam;
         if TeX
-            TeXNAMES = [];
+            TeXNAMES = texnam;
+        end
+    else
+        NAMES = char(NAMES,nam);
+        if TeX
+            TeXNAMES = char(TeXNAMES,texnam);
         end
-        NAMES = [];
-    end
-    [nam,texnam] = get_the_name(i,TeX);
-    NAMES = strvcat(NAMES,nam);
-    if TeX
-        TeXNAMES = strvcat(TeXNAMES,texnam);
     end
     [x2,f2,abscissa,dens,binf2,bsup2] = draw_prior_density(i,bayestopt_);
     top2 = max(f2); 
diff --git a/matlab/PosteriorIRF.m b/matlab/PosteriorIRF.m
index ea421403cc193eecfcd49625f8786d7b28ae809f..d87c99eabfcd5dd628e73f98b14dd851ad9d7643 100644
--- a/matlab/PosteriorIRF.m
+++ b/matlab/PosteriorIRF.m
@@ -254,9 +254,12 @@ DistribIRF = zeros(options_.irf,9,nvar,M_.exo_nbr);
 HPDIRF = zeros(options_.irf,2,nvar,M_.exo_nbr);
 
 if options_.TeX
-  varlist_TeX = [];
   for i=1:nvar
-    varlist_TeX = strvcat(varlist_TeX,M_.endo_names_tex(IndxVariables(i),:));
+      if i==1
+          varlist_TeX = M_.endo_names_tex(IndxVariables(i),:);
+      else
+          varlist_TeX = char(varlist_TeX,M_.endo_names_tex(IndxVariables(i),:));
+      end
   end
 end
 
@@ -379,10 +382,15 @@ if options_.TeX
           if max(abs(MeanIRF(:,j,i))) > 10^(-6)  
             
             name = deblank(varlist(j,:));
-            NAMES = strvcat(NAMES,name);
-            
             texname = deblank(varlist_TeX(j,:));
-            TEXNAMES = strvcat(TEXNAMES,['$' texname '$']);
+
+            if j==1
+                NAMES = name;
+                TEXNAMES = ['$' texname '$'];
+            else
+                NAMES = char(NAMES,name);
+                TEXNAMES = char(TEXNAMES,['$' texname '$']);
+            end
           end
           
          end
diff --git a/matlab/PosteriorIRF_core2.m b/matlab/PosteriorIRF_core2.m
index d3f9b3a898412a4df9d90a5063b6766e5818c5b1..b9bd4bf321c8e1396d9889e17c0a249dc97078ef 100644
--- a/matlab/PosteriorIRF_core2.m
+++ b/matlab/PosteriorIRF_core2.m
@@ -89,7 +89,6 @@ OutputFileName={};
 
 subplotnum = 0;
 for i=fpar:npar,
-  NAMES = [];
   figunumber = 0;
   
   for j=1:nvar
@@ -143,7 +142,6 @@ for i=fpar:npar,
           hold off
       end
       name = deblank(varlist(j,:));
-      NAMES = strvcat(NAMES,name);
       title(name,'Interpreter','none')
     end
     
diff --git a/matlab/disp_identification.m b/matlab/disp_identification.m
index 51119f0c2976d225bbe01a6344e9a8752579130f..c54be791d54e9f0d6c2040d1da2e58488bb1537d 100644
--- a/matlab/disp_identification.m
+++ b/matlab/disp_identification.m
@@ -1,6 +1,6 @@
 function disp_identification(pdraws, idemodel, idemoments, disp_pcorr)
 
-% Copyright (C) 2008 Dynare Team
+% Copyright (C) 2008-2010 Dynare Team
 %
 % This file is part of Dynare.
 %
@@ -89,8 +89,8 @@ for j=1:npar,
 end
 
 
-dyntable('Multi collinearity in the model:',strvcat('param','min','mean','max'), ...
-         strvcat(bayestopt_.name(kok)),[mmin, mmean, mmax],10,10,6);
+dyntable('Multi collinearity in the model:',char('param','min','mean','max'), ...
+         char(bayestopt_.name(kok)),[mmin, mmean, mmax],10,10,6);
 disp(' ')
 for j=1:npar,
     iweak = length(find(idemodel.Mco(j,:)'>(1-1.e-10)));
@@ -114,8 +114,8 @@ for j=1:npar,
 end
 disp(' ')
 
-dyntable('Multi collinearity for moments in J:',strvcat('param','min','mean','max'), ...
-         strvcat(bayestopt_.name(kokJ)),[mminJ, mmeanJ, mmaxJ],10,10,6);
+dyntable('Multi collinearity for moments in J:',char('param','min','mean','max'), ...
+         char(bayestopt_.name(kokJ)),[mminJ, mmeanJ, mmaxJ],10,10,6);
 disp(' ')
 for j=1:npar,
     iweak = length(find(idemoments.Mco(j,:)'>(1-1.e-10)));
@@ -141,12 +141,12 @@ disp(' ')
 
 if disp_pcorr,
     for j=1:length(kokP),
-        dyntable([bayestopt_.name{kokP(j)},' pairwise correlations in the model'],strvcat(' ','min','mean','max'), ...
-                 strvcat(bayestopt_.name{jpM{j}}),[pminM{j}' pmeanM{j}' pmaxM{j}'],10,10,3);  
+        dyntable([bayestopt_.name{kokP(j)},' pairwise correlations in the model'],char(' ','min','mean','max'), ...
+                 char(bayestopt_.name{jpM{j}}),[pminM{j}' pmeanM{j}' pmaxM{j}'],10,10,3);  
     end
 
     for j=1:length(kokPJ),
-        dyntable([bayestopt_.name{kokPJ(j)},' pairwise correlations in J moments'],strvcat(' ','min','mean','max'), ...
-                 strvcat(bayestopt_.name{jpJ{j}}),[pminJ{j}' pmeanJ{j}' pmaxJ{j}'],10,10,3);  
+        dyntable([bayestopt_.name{kokPJ(j)},' pairwise correlations in J moments'],char(' ','min','mean','max'), ...
+                 char(bayestopt_.name{jpJ{j}}),[pminJ{j}' pmeanJ{j}' pmaxJ{j}'],10,10,3);  
     end
 end
diff --git a/matlab/disp_model_summary.m b/matlab/disp_model_summary.m
index 0ee14f5056f90a566e2b91aba04aece3bc8c5baf..6c9e2c3f32848970192d13e1ce39848c9cd488cb 100644
--- a/matlab/disp_model_summary.m
+++ b/matlab/disp_model_summary.m
@@ -7,7 +7,7 @@ function disp_model_summary(M,dr)
 %   M         [matlab structure] Definition of the model.           
 %   dr        [matlab structure] Decision rules
 %
-% Copyright (C) 2001-2009 Dynare Team
+% Copyright (C) 2001-2010 Dynare Team
 %
 % This file is part of Dynare.
 %
@@ -36,7 +36,7 @@ disp(['  Number of jumpers:           ' ...
 disp(['  Number of static variables:  ' int2str(dr.nstatic)])
 my_title='MATRIX OF COVARIANCE OF EXOGENOUS SHOCKS';
 labels = deblank(M.exo_names);
-headers = strvcat('Variables',labels);
+headers = char('Variables',labels);
 lh = size(labels,2)+2;
 dyntable(my_title,headers,labels,M.Sigma_e,lh,10,6);
 
diff --git a/matlab/disp_moments.m b/matlab/disp_moments.m
index d2e51a435e55490e986e4ba2b45fbb2ac8f37489..a2ad56cbb9c8e950c9bf41fa8241535f9e3e4fa6 100644
--- a/matlab/disp_moments.m
+++ b/matlab/disp_moments.m
@@ -1,7 +1,7 @@
 function disp_moments(y,var_list)
 % Displays moments of simulated variables
 
-% Copyright (C) 2001-2009 Dynare Team
+% Copyright (C) 2001-2010 Dynare Team
 %
 % This file is part of Dynare.
 %
@@ -62,7 +62,7 @@ if options_.nomoments == 0
         title = [title ' (HP filter, lambda = ' ...
                  int2str(options_.hp_filter) ')'];
     end
-    headers=strvcat('VARIABLE','MEAN','STD. DEV.','VARIANCE','SKEWNESS', ...
+    headers=char('VARIABLE','MEAN','STD. DEV.','VARIANCE','SKEWNESS', ...
                     'KURTOSIS');
     dyntable(title,headers,labels,z,size(labels,2)+2,16,6);
 end
@@ -74,7 +74,7 @@ if options_.nocorr == 0
         title = [title ' (HP filter, lambda = ' ...
                  int2str(options_.hp_filter) ')'];
     end
-    headers = strvcat('VARIABLE',M_.endo_names(ivar,:));
+    headers = char('VARIABLE',M_.endo_names(ivar,:));
     dyntable(title,headers,labels,corr,size(labels,2)+2,8,4);
 end
 
@@ -92,7 +92,7 @@ if ar > 0
         title = [title ' (HP filter, lambda = ' ...
                  int2str(options_.hp_filter) ')'];
     end
-    headers = strvcat('VARIABLE',int2str([1:ar]'));
+    headers = char('VARIABLE',int2str([1:ar]'));
     dyntable(title,headers,labels,autocorr,size(labels,2)+2,8,4);
 end
 
diff --git a/matlab/disp_th_moments.m b/matlab/disp_th_moments.m
index 64ca5de32c8da6d2e5c40b0b562ca2060e4e8205..09358b9397f69f22868ad4e40e62b16fc373c432 100644
--- a/matlab/disp_th_moments.m
+++ b/matlab/disp_th_moments.m
@@ -1,7 +1,7 @@
 function disp_th_moments(dr,var_list)
 % Display theoretical moments of variables
 
-% Copyright (C) 2001-2009 Dynare Team
+% Copyright (C) 2001-2010 Dynare Team
 %
 % This file is part of Dynare.
 %
@@ -57,7 +57,7 @@ if ~options_.noprint %options_.nomoments == 0
     if options_.hp_filter
         title = [title ' (HP filter, lambda = ' int2str(options_.hp_filter) ')'];
     end
-    headers=strvcat('VARIABLE','MEAN','STD. DEV.','VARIANCE');
+    headers=char('VARIABLE','MEAN','STD. DEV.','VARIANCE');
     labels = deblank(M_.endo_names(ivar,:));
     lh = size(labels,2)+2;
     dyntable(title,headers,labels,z,lh,11,4);
@@ -70,7 +70,7 @@ if ~options_.noprint %options_.nomoments == 0
         end
         headers = M_.exo_names;
         headers(M_.exo_names_orig_ord,:) = headers;
-        headers = strvcat(' ',headers);
+        headers = char(' ',headers);
         lh = size(deblank(M_.endo_names(ivar(stationary_vars),:)),2)+2;
         dyntable(title,headers,deblank(M_.endo_names(ivar(stationary_vars), ...
                                                      :)),100*oo_.gamma_y{options_.ar+2}(stationary_vars,:),lh,8,2);
@@ -93,7 +93,7 @@ if options_.nocorr == 0
         title = [title ' (HP filter, lambda = ' int2str(options_.hp_filter) ')'];
     end
     labels = deblank(M_.endo_names(ivar(i1),:));
-    headers = strvcat('Variables',labels);
+    headers = char('Variables',labels);
     lh = size(labels,2)+2;
     dyntable(title,headers,labels,corr,lh,8,4);
     end
@@ -111,7 +111,7 @@ if options_.nocorr == 0
           title = [title ' (HP filter, lambda = ' int2str(options_.hp_filter) ')'];      
       end      
       labels = deblank(M_.endo_names(ivar(i1),:));      
-      headers = strvcat('Order ',int2str([1:options_.ar]'));      
+      headers = char('Order ',int2str([1:options_.ar]'));
       lh = size(labels,2)+2;
       dyntable(title,headers,labels,z,lh,8,4);
   end  
diff --git a/matlab/display_conditional_variance_decomposition.m b/matlab/display_conditional_variance_decomposition.m
index 99af1e8df36cb6fe5f9d20e1de9bd4b3e7867833..c4ad9b752741fff8001c16b9d904639c1b4a31f8 100644
--- a/matlab/display_conditional_variance_decomposition.m
+++ b/matlab/display_conditional_variance_decomposition.m
@@ -65,7 +65,7 @@ for i=1:length(Steps)
     if options_.noprint == 0
         headers = M_.exo_names;
         headers(M_.exo_names_orig_ord,:) = headers;
-        headers = strvcat(' ',headers);
+        headers = char(' ',headers);
         lh = size(deblank(M_.endo_names(SubsetOfVariables,:)),2)+2;
         dyntable('',headers,...
                  deblank(M_.endo_names(SubsetOfVariables,:)),...
diff --git a/matlab/dr1_sparse.m b/matlab/dr1_sparse.m
index 5ec8be77a091dbd33ea324397232efe425d8e6cf..5b0a243442bc331543f6ac122a1e755af58066f8 100644
--- a/matlab/dr1_sparse.m
+++ b/matlab/dr1_sparse.m
@@ -30,7 +30,7 @@ function [dr,info,M_,options_,oo_] = dr1_sparse(dr,task,M_,options_,oo_)
 %   none.
 %  
 
-% Copyright (C) 1996-2009 Dynare Team
+% Copyright (C) 1996-2010 Dynare Team
 %
 % This file is part of Dynare.
 %
@@ -175,7 +175,7 @@ if options_.ramsey_policy
 % $$$             M_.maximum_lead = M_.maximum_lag;
 % $$$             M_.maximum_endo_lead = M_.maximum_lag;
 % $$$             
-% $$$             M_.endo_names = strvcat(M_.orig_model.endo_names, M_.endo_names(endo_nbr1+k,:));
+% $$$             M_.endo_names = char(M_.orig_model.endo_names, M_.endo_names(endo_nbr1+k,:));
 % $$$             M_.endo_nbr = endo_nbr1+length(k);  
 % $$$         end
 else
diff --git a/matlab/dyn_ramsey_dynamic_.m b/matlab/dyn_ramsey_dynamic_.m
index 3b44f94956fd475762946f2f83d6e4bd43f9fa15..b23aacad001c7da0bdb36bc3fa93ffe8b4a2edd2 100644
--- a/matlab/dyn_ramsey_dynamic_.m
+++ b/matlab/dyn_ramsey_dynamic_.m
@@ -13,7 +13,7 @@ function [J,M_] = dyn_ramsey_dynamic_(ys,lbar,M_,options_,oo_,it_)
 % SPECIAL REQUIREMENTS
 %     none
 
-% Copyright (C) 2003-2009 Dynare Team
+% Copyright (C) 2003-2010 Dynare Team
 %
 % This file is part of Dynare.
 %
@@ -84,10 +84,10 @@ max_leadlag1 = max_lead1;
 % adding new variables names
 endo_names1 = endo_names;
 % adding shocks to endogenous variables
-endo_names1 = strvcat(endo_names1, exo_names);
+endo_names1 = char(endo_names1, exo_names);
 % adding multipliers names
 for i=1:mult_nbr;
-    endo_names1 = strvcat(endo_names1,['mult_' int2str(i)]);
+    endo_names1 = char(endo_names1,['mult_' int2str(i)]);
 end
 
 % expanding matrix of lead/lag incidence
diff --git a/matlab/dynare_estimation_1.m b/matlab/dynare_estimation_1.m
index acf1f5ebf511675095ebb0962bfc3d2f41558075..e4830a659c48d09bcef3ba1475733202994c7d5a 100644
--- a/matlab/dynare_estimation_1.m
+++ b/matlab/dynare_estimation_1.m
@@ -12,7 +12,7 @@ function dynare_estimation_1(var_list_,dname)
 % SPECIAL REQUIREMENTS
 %   none
 
-% Copyright (C) 2003-2009, 2010 Dynare Team
+% Copyright (C) 2003-2010 Dynare Team
 %
 % This file is part of Dynare.
 %
@@ -1171,14 +1171,22 @@ if (~((any(bayestopt_.pshape > 0) & options_.mh_replic) | (any(bayestopt_.pshape
             hold off
             xlim([1 gend])
             name    = deblank(M_.exo_names(i,:));
-            NAMES   = strvcat(NAMES,name);
+            if isempty(NAMES)
+                NAMES = name;
+            else
+                NAMES = char(NAMES,name);
+            end
             if ~isempty(options_.XTick)
                 set(gca,'XTick',options_.XTick)
                 set(gca,'XTickLabel',options_.XTickLabel)
             end
             if options_.TeX
                 texname = M_.exo_names_tex(i,1);
-                TeXNAMES   = strvcat(TeXNAMES,['$ ' deblank(texname) ' $']);
+                if isempty(TeXNAMES)
+                    TeXNAMES = ['$ ' deblank(texname) ' $'];
+                else
+                    TeXNAMES = char(TeXNAMES,['$ ' deblank(texname) ' $']);
+                end
             end
             title(name,'Interpreter','none')
             eval(['oo_.SmoothedShocks.' deblank(M_.exo_names(i,:)) ' = innov(i,:)'';']);
@@ -1217,7 +1225,11 @@ if (~((any(bayestopt_.pshape > 0) & options_.mh_replic) | (any(bayestopt_.pshape
                 plot(1:gend,innov(k,:),'-k','linewidth',1)
                 hold off
                 name = deblank(M_.exo_names(k,:));
-                NAMES = strvcat(NAMES,name);
+                if isempty(NAMES)
+                    NAMES = name;
+                else
+                    NAMES = char(NAMES,name);
+                end
                 if ~isempty(options_.XTick)
                     set(gca,'XTick',options_.XTick)
                     set(gca,'XTickLabel',options_.XTickLabel)
@@ -1225,7 +1237,11 @@ if (~((any(bayestopt_.pshape > 0) & options_.mh_replic) | (any(bayestopt_.pshape
                 xlim([1 gend])
                 if options_.TeX
                     texname = M_.exo_names_tex(k,:);
-                    TeXNAMES = strvcat(TeXNAMES,['$ ' deblank(texname) ' $']);
+                    if isempty(TeXNAMES)
+                        TeXNAMES = ['$ ' deblank(texname) ' $'];
+                    else
+                        TeXNAMES = char(TeXNAMES,['$ ' deblank(texname) ' $']);
+                    end
                 end    
                 title(name,'Interpreter','none')
                 eval(['oo_.SmoothedShocks.' deblank(name) ' = innov(k,:)'';']);
@@ -1265,7 +1281,11 @@ if (~((any(bayestopt_.pshape > 0) & options_.mh_replic) | (any(bayestopt_.pshape
             plot(1:gend,innov(k,:),'-k','linewidth',1)
             hold off
             name     = deblank(M_.exo_names(k,:));
-            NAMES    = strvcat(NAMES,name);
+            if isempty(NAMES)
+                NAMES = name;
+            else
+                NAMES = char(NAMES,name);
+            end
             if ~isempty(options_.XTick)
                 set(gca,'XTick',options_.XTick)
                 set(gca,'XTickLabel',options_.XTickLabel)
@@ -1273,7 +1293,11 @@ if (~((any(bayestopt_.pshape > 0) & options_.mh_replic) | (any(bayestopt_.pshape
             xlim([1 gend])
             if options_.TeX
                 texname  = M_.exo_names_tex(k,:);
-                TeXNAMES = strvcat(TeXNAMES,['$ ' deblank(texname) ' $']);
+                if isempty(TeXNAMES)
+                    TeXNAMES = ['$ ' deblank(texname) ' $'];
+                else
+                    TeXNAMES = char(TeXNAMES,['$ ' deblank(texname) ' $']);
+                end
             end
             title(name,'Interpreter','none')
             eval(['oo_.SmoothedShocks.' deblank(name) ' = innov(k,:)'';']);
@@ -1345,7 +1369,11 @@ if (~((any(bayestopt_.pshape > 0) & options_.mh_replic) | (any(bayestopt_.pshape
                 plot([1 gend],[0 0],'-r','linewidth',.5)
                 hold off
                 name    = deblank(options_.varobs(index(i),:));
-                NAMES   = strvcat(NAMES,name);
+                if isempty(NAMES)
+                    NAMES = name;
+                else
+                    NAMES = char(NAMES,name);
+                end
                 if ~isempty(options_.XTick)
                     set(gca,'XTick',options_.XTick)
                     set(gca,'XTickLabel',options_.XTickLabel)
@@ -1353,7 +1381,11 @@ if (~((any(bayestopt_.pshape > 0) & options_.mh_replic) | (any(bayestopt_.pshape
                 if options_.TeX
                     idx = strmatch(options_.varobs(indx(i),:),M_.endo_names,'exact');
                     texname = M_.endo_names_tex(idx,:);
-                    TeXNAMES   = strvcat(TeXNAMES,['$ ' deblank(texname) ' $']);
+                    if isempty(TeXNAMES)
+                        TeXNAMES = ['$ ' deblank(texname) ' $'];
+                    else
+                        TeXNAMES = char(TeXNAMES,['$ ' deblank(texname) ' $']);
+                    end
                 end
                 title(name,'Interpreter','none')
             end
@@ -1391,7 +1423,11 @@ if (~((any(bayestopt_.pshape > 0) & options_.mh_replic) | (any(bayestopt_.pshape
                     plot(1:gend,measurement_error(index(k),:),'-k','linewidth',1)
                     hold off
                     name = deblank(options_.varobs(index(k),:));
-                    NAMES = strvcat(NAMES,name);
+                    if isempty(NAMES)
+                        NAMES = name;
+                    else
+                        NAMES = char(NAMES,name);
+                    end
                     if ~isempty(options_.XTick)
                         set(gca,'XTick',options_.XTick)
                         set(gca,'XTickLabel',options_.XTickLabel)
@@ -1399,8 +1435,12 @@ if (~((any(bayestopt_.pshape > 0) & options_.mh_replic) | (any(bayestopt_.pshape
                     if options_.TeX
                         idx = strmatch(options_.varobs(k),M_.endo_names,'exact');
                         texname = M_.endo_names_tex(idx,:);
-                        TeXNAMES = strvcat(TeXNAMES,['$ ' deblank(texname) ' $']);
-                    end    
+                        if isempty(TeXNAMES)
+                            TeXNAMES = ['$ ' deblank(texname) ' $'];
+                        else
+                            TeXNAMES = char(TeXNAMES,['$ ' deblank(texname) ' $']);
+                        end
+                    end
                     title(name,'Interpreter','none')
                 end
                 eval(['print -depsc2 ' M_.fname '_SmoothedObservationErrors' int2str(plt) '.eps']);
@@ -1438,7 +1478,11 @@ if (~((any(bayestopt_.pshape > 0) & options_.mh_replic) | (any(bayestopt_.pshape
                 plot(1:gend,measurement_error(index(k),:),'-k','linewidth',1)
                 hold off
                 name     = deblank(options_.varobs(index(k),:));
-                NAMES    = strvcat(NAMES,name);
+                if isempty(NAMES)
+                    NAMES = name;
+                else
+                    NAMES = char(NAMES,name);
+                end
                 if ~isempty(options_.XTick)
                     set(gca,'XTick',options_.XTick)
                     set(gca,'XTickLabel',options_.XTickLabel)
@@ -1446,7 +1490,11 @@ if (~((any(bayestopt_.pshape > 0) & options_.mh_replic) | (any(bayestopt_.pshape
                 if options_.TeX
                     idx = strmatch(options_.varobs(index(k)),M_.endo_names,'exact');
                     texname = M_.endo_names_tex(idx,:);
-                    TeXNAMES = strvcat(TeXNAMES,['$ ' deblank(texname) ' $']);
+                    if isempty(TeXNAMES)
+                        TeXNAMES = ['$ ' deblank(texname) ' $'];
+                    else
+                        TeXNAMES = char(TeXNAMES,['$ ' deblank(texname) ' $']);
+                    end
                 end
                 title(name,'Interpreter','none');
             end
@@ -1493,7 +1541,11 @@ if (~((any(bayestopt_.pshape > 0) & options_.mh_replic) | (any(bayestopt_.pshape
             plot(1:gend,rawdata(:,i),'-k','linewidth',1)
             hold off
             name    = deblank(options_.varobs(i,:));
-            NAMES   = strvcat(NAMES,name);
+            if isempty(NAMES)
+                NAMES = name;
+            else
+                NAMES = char(NAMES,name);
+            end
             if ~isempty(options_.XTick)
                 set(gca,'XTick',options_.XTick)
                 set(gca,'XTickLabel',options_.XTickLabel)
@@ -1502,7 +1554,11 @@ if (~((any(bayestopt_.pshape > 0) & options_.mh_replic) | (any(bayestopt_.pshape
             if options_.TeX
                 idx = strmatch(options_.varobs(i),M_.endo_names,'exact');
                 texname = M_.endo_names_tex(idx,:);
-                TeXNAMES   = strvcat(TeXNAMES,['$ ' deblank(texname) ' $']);
+                if isempty(TeXNAMES)
+                    TeXNAMES = ['$ ' deblank(texname) ' $'];
+                else
+                    TeXNAMES = char(TeXNAMES,['$ ' deblank(texname) ' $']);
+                end
             end
             title(name,'Interpreter','none')
         end
@@ -1540,7 +1596,11 @@ if (~((any(bayestopt_.pshape > 0) & options_.mh_replic) | (any(bayestopt_.pshape
                 plot(1:gend,rawdata(:,k),'-k','linewidth',1)
                 hold off
                 name = deblank(options_.varobs(k,:));
-                NAMES = strvcat(NAMES,name);
+                if isempty(NAMES)
+                    NAMES = name;
+                else
+                    NAMES = char(NAMES,name);
+                end
                 if ~isempty(options_.XTick)
                     set(gca,'XTick',options_.XTick)
                     set(gca,'XTickLabel',options_.XTickLabel)
@@ -1549,7 +1609,11 @@ if (~((any(bayestopt_.pshape > 0) & options_.mh_replic) | (any(bayestopt_.pshape
                 if options_.TeX
                     idx = strmatch(options_.varobs(k),M_.endo_names,'exact');
                     texname = M_.endo_names_tex(idx,:);
-                    TeXNAMES = strvcat(TeXNAMES,['$ ' deblank(texname) ' $']);
+                    if isempty(TeXNAMES)
+                        TeXNAMES = ['$ ' deblank(texname) ' $'];
+                    else
+                        TeXNAMES = char(TeXNAMES,['$ ' deblank(texname) ' $']);
+                    end
                 end    
                 title(name,'Interpreter','none')
             end
@@ -1588,7 +1652,11 @@ if (~((any(bayestopt_.pshape > 0) & options_.mh_replic) | (any(bayestopt_.pshape
             plot(1:gend,rawdata(:,k),'-k','linewidth',1)
             hold off
             name = deblank(options_.varobs(k,:));
-            NAMES    = strvcat(NAMES,name);
+            if isempty(NAMES)
+                NAMES = name;
+            else
+                NAMES = char(NAMES,name);
+            end
             if ~isempty(options_.XTick)
                 set(gca,'XTick',options_.XTick)
                 set(gca,'XTickLabel',options_.XTickLabel)
@@ -1597,7 +1665,11 @@ if (~((any(bayestopt_.pshape > 0) & options_.mh_replic) | (any(bayestopt_.pshape
             if options_.TeX
                 idx = strmatch(options_.varobs(i),M_.endo_names,'exact');
                 texname = M_.endo_names_tex(idx,:);
-                TeXNAMES = strvcat(TeXNAMES,['$ ' deblank(texname) ' $']);
+                if isempty(TeXNAMES)
+                    TeXNAMES = ['$ ' deblank(texname) ' $'];
+                else
+                    TeXNAMES = char(TeXNAMES,['$ ' deblank(texname) ' $']);
+                end
             end
             title(name,'Interpreter','none');
         end
diff --git a/matlab/dyntable.m b/matlab/dyntable.m
index 3564b5b84dcc7676bcc098f31caef7db64e99a3f..1daa8923a9f0707f2b1371410612e7815835299f 100644
--- a/matlab/dyntable.m
+++ b/matlab/dyntable.m
@@ -1,7 +1,7 @@
 function dyntable(title,headers,labels,values,label_width,val_width, ...
                   val_precis)
 
-% Copyright (C) 2002-2009 Dynare Team
+% Copyright (C) 2002-2010 Dynare Team
 %
 % This file is part of Dynare.
 %
@@ -24,7 +24,7 @@ if options_.noprint
     return
 end
 
-label_width = max(size(deblank(strvcat(headers(1,:),labels)),2)+2, ...
+label_width = max(size(deblank(char(headers(1,:),labels)),2)+2, ...
                   label_width);
 val_width = max(size(deblank(headers(2:end,:)),2)+2,val_width);
 label_fmt = sprintf('%%-%ds',label_width);
diff --git a/matlab/formdata.m b/matlab/formdata.m
index b19345704d120b3f0d0fda61929de4e58285389a..06dba8416a50db447d9a701836b5f9c38e4cfa29 100644
--- a/matlab/formdata.m
+++ b/matlab/formdata.m
@@ -11,7 +11,7 @@ function formdata(fname,date)
 % SPECIAL REQUIREMENT
 %   none
 
-% Copyright (C) 2007-2008 Dynare Team
+% Copyright (C) 2007-2010 Dynare Team
 %
 % This file is part of Dynare.
 %
@@ -34,7 +34,7 @@ n=size(oo_.endo_simul,1);
 t=size(oo_.endo_simul,2);
 SN=upper(cellstr(M_.endo_names));
 for i=1:n
-    str=strvcat(SN(i));
+    str=char(SN(i));
     fprintf(fid,'USER: x x DATAFILE: x %s\n',str);
     fprintf(fid,'PER: 1    YEAR: %s   FRAC: 1   NOBS: %d   CLINES: 0   DLINES: ???\n',date,t);
     fprintf(fid,'%10.5f %10.5f %10.5f %10.5f\n',reshape(oo_.endo_simul(i,1:floor(t/4)*4),floor(t/4),4));
@@ -58,7 +58,7 @@ n=size(oo_.exo_simul,2);
 t=size(oo_.exo_simul,1);
 SN=upper(cellstr(M_.exo_names));
 for i=1:n
-    str=strvcat(SN(i));
+    str=char(SN(i));
     fprintf(fid,'USER: x x DATAFILE: x %s\n',str);
     fprintf(fid,'PER: 1    YEAR: %s   FRAC: 1   NOBS: %d   CLINES: 0   DLINES: ???\n',date,t);
     fprintf(fid,'%10.5f %10.5f %10.5f %10.5f\n',reshape(oo_.exo_simul(1:floor(t/4)*4,i),floor(t/4),4));
diff --git a/matlab/graph_decomp.m b/matlab/graph_decomp.m
index 378ca3d8eada7a6f85e571ff15d918fe5c0de54b..6292bae626186607c46103c1b6d12fbab49bb0b3 100644
--- a/matlab/graph_decomp.m
+++ b/matlab/graph_decomp.m
@@ -69,7 +69,7 @@ for j=1:nvar
     hold on;
     y1 = 0;
     height = 1/comp_nbr;
-    labels = strvcat(shock_names,'Initial values');
+    labels = char(shock_names,'Initial values');
     
     for j=1:comp_nbr
         fill([0 0 0.2 0.2],[y1 y1+0.7*height y1+0.7*height y1],j);
diff --git a/matlab/mode_check.m b/matlab/mode_check.m
index d7204c6baf3769b8ce4433052444e61b2f2a8176..383214ee235de46f8dc0f54ad11c675ec11a1fa7 100644
--- a/matlab/mode_check.m
+++ b/matlab/mode_check.m
@@ -74,8 +74,13 @@ for plt = 1:nbplt,
         kk = (plt-1)*nstar+k;
         [name,texname] = get_the_name(kk,TeX);
         if TeX
-            NAMES = strvcat(NAMES,name);
-            TeXNAMES = strvcat(TeXNAMES,texname);
+            if isempty(NAMES)
+                NAMES = name;
+                TeXNAMES = texname;
+            else
+                NAMES = char(NAMES,name);
+                TeXNAMES = char(TeXNAMES,texname);
+            end
         end
         xx = x;
         l1 = max(lb(kk),0.5*x(kk));
diff --git a/matlab/model_comparison.m b/matlab/model_comparison.m
index 0a9eb1c6ac0955aa1c871b8d9e34b65f2912dd5d..fbaf818356485b517acf29584c183ea685b345c6 100644
--- a/matlab/model_comparison.m
+++ b/matlab/model_comparison.m
@@ -12,7 +12,7 @@ function PosteriorOddsTable = model_comparison(ModelNames,ModelPriors,oo,options
 % SPECIAL REQUIREMENTS
 %    none
 
-% Copyright (C) 2007-2008 Dynare Team
+% Copyright (C) 2007-2010 Dynare Team
 %
 % This file is part of Dynare.
 %
@@ -94,14 +94,14 @@ elmpd = exp(lmpd-maxval);
 
 % Now I display the posterior probabilities.
 title = 'Model Comparison'; 
-headers = strvcat('Model',ShortModelNames{:});
+headers = char('Model',ShortModelNames{:});
 if prior_flag
-    labels = strvcat('Priors','Log Marginal Density','Bayes Ratio', ...
+    labels = char('Priors','Log Marginal Density','Bayes Ratio', ...
                      'Posterior Model Probability');
     values = [ModelPriors';MarginalLogDensity';exp(lmpd-lmpd(1))'; ...
               elmpd'/sum(elmpd)];
 else
-    labels = strvcat('Priors','Log Marginal Density','Bayes Ratio','Posterior Odds Ratio', ...
+    labels = char('Priors','Log Marginal Density','Bayes Ratio','Posterior Odds Ratio', ...
                      'Posterior Model Probability');
     values = [ModelPriors';MarginalLogDensity'; exp(MarginalLogDensity-MarginalLogDensity(1))'; ...
               exp(lmpd-lmpd(1))'; elmpd'/sum(elmpd)];
diff --git a/matlab/mult_elimination.m b/matlab/mult_elimination.m
index 8c9fbf53b8ebe37d020c3b8f75d072779529024e..31d1769180858d470d86b645c030323125a95ae8 100644
--- a/matlab/mult_elimination.m
+++ b/matlab/mult_elimination.m
@@ -107,7 +107,7 @@ function dr=mult_elimination(varlist,M_, options_, oo_)
       headers = 'Variables';
       for i=1:length(varlist)
           k = strmatch(varlist{i},M_.endo_names(dr.order_var,:),'exact');
-          headers = strvcat(headers,varlist{i});
+          headers = char(headers,varlist{i});
           
           res_table(1:nspred,i) = M1(k,:)';
           res_table(nspred+(1:nspred),i) = M2(k,:)';
@@ -117,7 +117,7 @@ function dr=mult_elimination(varlist,M_, options_, oo_)
             
       my_title='ELIMINATION OF THE MULTIPLIERS';
       lab1 = M_.endo_names(dr.order_var(dr.nstatic+[ 1 2 5:8]),:);
-      labels = strvcat(lab1,lab1,M_.exo_names,M_.exo_names);
+      labels = char(lab1,lab1,M_.exo_names,M_.exo_names);
       lh = size(labels,2)+2;
       dyntable(my_title,headers,labels,res_table,lh,10,6);
       disp(' ')
diff --git a/matlab/partial_information/PCL_Part_info_moments.m b/matlab/partial_information/PCL_Part_info_moments.m
index 0dea34f3a7baad561bda7af976b640c08a70e072..b68b3d17d3b9f1454c91c110405e43ba8b847e48 100644
--- a/matlab/partial_information/PCL_Part_info_moments.m
+++ b/matlab/partial_information/PCL_Part_info_moments.m
@@ -149,7 +149,7 @@ function  AutoCOR_YRk=PCL_Part_info_irmoments( H, varobs, dr,ivar)
     if options_.nomoments == 0
         z = [ sqrt(diagCovYR0(ivar)) diagCovYR0(ivar) ]; 
         title='THEORETICAL MOMENTS';
-        headers=strvcat('VARIABLE','STD. DEV.','VARIANCE');
+        headers=char('VARIABLE','STD. DEV.','VARIANCE');
         dyntable(title,headers,labels,z,size(labels,2)+2,16,10);
     end
     if options_.nocorr == 0
@@ -157,7 +157,7 @@ function  AutoCOR_YRk=PCL_Part_info_irmoments( H, varobs, dr,ivar)
         DELTA=inv(diag(diagSqrtCovYR0));
         COR_Y= DELTA*COV_YR0*DELTA;
         title = 'MATRIX OF CORRELATION';
-        headers = strvcat('VARIABLE',M_.endo_names(ivar,:));
+        headers = char('VARIABLE',M_.endo_names(ivar,:));
         dyntable(title,headers,labels,COR_Y(ivar,ivar),size(labels,2)+2,8,4);
     else
         COR_Y=[];
@@ -178,7 +178,7 @@ function  AutoCOR_YRk=PCL_Part_info_irmoments( H, varobs, dr,ivar)
             AutoCOR_YRk(:,k)= diag(COV_YRk)./diagCovYR0;
         end
         title = 'COEFFICIENTS OF AUTOCORRELATION';
-        headers = strvcat('VARIABLE',int2str([1:ar]'));
+        headers = char('VARIABLE',int2str([1:ar]'));
         dyntable(title,headers,labels,AutoCOR_YRk(ivar,:),size(labels,2)+2,8,4);
     else
         AutoCOR_YRk=[];
diff --git a/matlab/plot_priors.m b/matlab/plot_priors.m
index c03a79605bcc7f4c28c4287bbb192b237d032bb8..c3bd2fc43a4796a763aca4a81ae7bfd343dbb526 100644
--- a/matlab/plot_priors.m
+++ b/matlab/plot_priors.m
@@ -13,7 +13,7 @@ function plot_priors(bayestopt_,M_,options_)
 % SPECIAL REQUIREMENTS
 %    None
 
-% Copyright (C) 2004-2009 Dynare Team
+% Copyright (C) 2004-2010 Dynare Team
 %
 % This file is part of Dynare.
 %
@@ -52,8 +52,13 @@ if nbplt == 1
         [x,f,abscissa,dens,binf,bsup] = draw_prior_density(i,bayestopt_);
         [nam,texnam] = get_the_name(i,TeX);
         if TeX
-            TeXNAMES = strvcat(TeXNAMES,texnam);
-            NAMES = strvcat(NAMES,nam);
+            if i==1
+                TeXNAMES = texnam;
+                NAMES = nam;
+            else
+                TeXNAMES = char(TeXNAMES,texnam);
+                NAMES = char(NAMES,nam);
+            end
         end    
         subplot(nr,nc,i)
         hh = plot(x,f,'-k','linewidth',2);
@@ -95,9 +100,14 @@ else
             [nam,texnam] = get_the_name(i,TeX);
             [x,f,abscissa,dens,binf,bsup] = draw_prior_density(i,bayestopt_);            
             if TeX
-                TeXNAMES = strvcat(TeXNAMES,texnam);
-                NAMES = strvcat(NAMES,nam);
-            end    
+                if index==1
+                    TeXNAMES = texnam;
+                    NAMES = nam;
+                else
+                    TeXNAMES = char(TeXNAMES,texnam);
+                    NAMES = char(NAMES,nam);
+                end
+            end
             subplot(nr,nc,index)
             hh = plot(x,f,'-k','linewidth',2);
             set(hh,'color',[0.7 0.7 0.7]);
@@ -134,8 +144,13 @@ else
         [x,f,abscissa,dens,binf,bsup] = draw_prior_density(i,bayestopt_);
         [nam,texnam] = get_the_name(i,TeX);
         if TeX
-            TeXNAMES = strvcat(TeXNAMES,texnam);
-            NAMES = strvcat(NAMES,nam);
+            if index==1
+                TeXNAMES = texnam;
+                NAMES = nam;
+            else
+                TeXNAMES = char(TeXNAMES,texnam);
+                NAMES = char(NAMES,nam);
+            end
         end    
         if lr
             subplot(lc,lr,index);
diff --git a/matlab/pm3.m b/matlab/pm3.m
index 7d23e8703ad31715e946a83dec8d18f1b9bee26d..4fafacc7f885596803a0402c8cab242e4c7b6f1a 100644
--- a/matlab/pm3.m
+++ b/matlab/pm3.m
@@ -43,7 +43,11 @@ if options_.TeX
     % needs to be fixed
     varlist_TeX = [];
     for i=1:nvar
-        varlist_TeX = strvcat(varlist_TeX,M_.endo_names_tex(SelecVariables(i),:));
+        if i==1
+            varlist_TeX = M_.endo_names_tex(SelecVariables(i),:);
+        else
+            varlist_TeX = char(varlist_TeX,M_.endo_names_tex(SelecVariables(i),:));
+        end
     end
 end
 Mean = zeros(n2,nvar);
@@ -107,9 +111,9 @@ if options_.TeX
         if max(abs(Mean(:,i))) > 10^(-6)
             subplotnum = subplotnum+1;
             name = deblank(varlist(i,:));
-            NAMES = strvcat(NAMES,name);
+            NAMES = name;
             texname = deblank(varlist_TeX(i,:));
-            TEXNAMES = strvcat(TEXNAMES,['$' texname '$']);
+            TEXNAMES = ['$' texname '$'];
         end
         if subplotnum == MaxNumberOfPlotsPerFigure | i == nvar
             fprintf(fidTeX,'\\begin{figure}[H]\n');
diff --git a/matlab/pm3_core.m b/matlab/pm3_core.m
index 5cc2ecffac2cf5ce4c59aad1806bb30d7674adfe..b8fe18c337d656663bf652a146ed4cd3a125bfa4 100644
--- a/matlab/pm3_core.m
+++ b/matlab/pm3_core.m
@@ -85,7 +85,6 @@ end
 OutputFileName = {};
 
 for i=fpar:nvar
-    NAMES = [];
     if max(abs(Mean(:,i))) > 10^(-6)
         subplotnum = subplotnum+1;
         set(0,'CurrentFigure',hh)
@@ -99,7 +98,6 @@ for i=fpar:nvar
         xlim([1 n2]);
         hold off
         name = deblank(varlist(i,:));
-        NAMES = strvcat(NAMES,name);
         title(name,'Interpreter','none')
     end
     
diff --git a/matlab/read_data_.m b/matlab/read_data_.m
index 5d67d4d3f80c0bb4b2be3de64d07ce74f2245b63..db520b2971bd19d6829ba45edaa41946731c2487 100644
--- a/matlab/read_data_.m
+++ b/matlab/read_data_.m
@@ -12,7 +12,7 @@ function read_data_
 % SPECIAL REQUIREMENT
 %   none
 
-% Copyright (C) 2007-2008 Dynare Team
+% Copyright (C) 2007-2010 Dynare Team
 %
 % This file is part of Dynare.
 %
@@ -39,7 +39,11 @@ if size(oo_.endo_simul,2) < M_.maximum_lag+M_.maximum_lead+options_.periods
     positions = ones(0);
     while (any(names_line))
         [chopped,names_line] = strtok(names_line);
-        allVariables = strvcat(allVariables, chopped);
+        if isempty(allVariables)
+            allVariables = chopped;
+        else
+            allVariables = char(allVariables, chopped);
+        end
         positions = [positions ; strmatch(chopped,M_.endo_names,'exact')];
     end
     Values=fscanf(fid,'%f',inf);
@@ -55,7 +59,11 @@ if size(oo_.exo_simul,1) < M_.maximum_lag+M_.maximum_lead+options_.periods
     positions = ones(0);
     while (any(names_line))
         [chopped,names_line] = strtok(names_line);
-        allVariables = strvcat(allVariables, chopped);
+        if isempty(allVariables)
+            allVariables = chopped;
+        else
+            allVariables = char(allVariables, chopped);
+        end
         positions = [positions ; strmatch(chopped,M_.exo_names,'exact')];
     end
     Values=fscanf(fid,'%f',inf);
diff --git a/matlab/set_prior.m b/matlab/set_prior.m
index 3f4151f5df6a82293a4c3295b1de1aa3b9fe66e0..54bad222450a0aa49f4e400acbb5e2618774d7a1 100644
--- a/matlab/set_prior.m
+++ b/matlab/set_prior.m
@@ -90,7 +90,11 @@ if nvn
     bayestopt_.p3 = [ bayestopt_.p3; estim_params_.var_endo(:,8)];
     bayestopt_.p4 = [ bayestopt_.p4; estim_params_.var_endo(:,9)];
     bayestopt_.jscale = [ bayestopt_.jscale; estim_params_.var_endo(:,10)];
-    bayestopt_.name = cellstr(strvcat(char(bayestopt_.name), options_.varobs(estim_params_.var_endo(:,1),:)));
+    if isempty(bayestopt_.name)
+        bayestopt_.name = cellstr(char(options_.varobs(estim_params_.var_endo(:,1),:)));
+    else
+        bayestopt_.name = cellstr(char(char(bayestopt_.name), options_.varobs(estim_params_.var_endo(:,1),:)));
+    end
 end
 if ncx
     xparam1 = [xparam1; estim_params_.corrx(:,3)];
@@ -102,8 +106,13 @@ if ncx
     bayestopt_.p3 = [ bayestopt_.p3; estim_params_.corrx(:,9)];
     bayestopt_.p4 = [ bayestopt_.p4; estim_params_.corrx(:,10)];
     bayestopt_.jscale = [ bayestopt_.jscale; estim_params_.corrx(:,11)];
-    bayestopt_.name = cellstr(strvcat(char(bayestopt_.name), char(strcat(cellstr(M_.exo_names(estim_params_.corrx(:,1),:)), ...
-                                                      ',' , cellstr(M_.exo_names(estim_params_.corrx(:,2),:))))));
+    if isempty(bayestopt_.name)
+        bayestopt_.name = cellstr(char(char(strcat(cellstr(M_.exo_names(estim_params_.corrx(:,1),:)), ...
+            ',' , cellstr(M_.exo_names(estim_params_.corrx(:,2),:))))));
+    else
+        bayestopt_.name = cellstr(char(char(bayestopt_.name), char(strcat(cellstr(M_.exo_names(estim_params_.corrx(:,1),:)), ...
+            ',' , cellstr(M_.exo_names(estim_params_.corrx(:,2),:))))));
+    end
 end
 if ncn
     if M_.H == 0
@@ -119,8 +128,13 @@ if ncn
     bayestopt_.p3 = [ bayestopt_.p3; estim_params_.corrn(:,9)];
     bayestopt_.p4 = [ bayestopt_.p4; estim_params_.corrn(:,10)];
     bayestopt_.jscale = [ bayestopt_.jscale; estim_params_.corrn(:,11)];
-    bayestopt_.name = cellstr(strvcat(char(bayestopt_.name), char(strcat(cellstr(M_.endo_names(estim_params_.corrn(:,1),:)),...
-                                                      ',' ,  cellstr(M_.endo_names(estim_params_.corrn(:,2),:))))));
+    if isempty(bayestopt_.name)
+        bayestopt_.name = cellstr(char(char(strcat(cellstr(M_.endo_names(estim_params_.corrn(:,1),:)),...
+            ',' ,  cellstr(M_.endo_names(estim_params_.corrn(:,2),:))))));
+    else
+        bayestopt_.name = cellstr(char(char(bayestopt_.name), char(strcat(cellstr(M_.endo_names(estim_params_.corrn(:,1),:)),...
+            ',' ,  cellstr(M_.endo_names(estim_params_.corrn(:,2),:))))));
+    end
 end
 if np
     xparam1 = [xparam1; estim_params_.param_vals(:,2)];
@@ -132,7 +146,11 @@ if np
     bayestopt_.p3 = [ bayestopt_.p3; estim_params_.param_vals(:,8)];
     bayestopt_.p4 = [ bayestopt_.p4; estim_params_.param_vals(:,9)];
     bayestopt_.jscale = [ bayestopt_.jscale; estim_params_.param_vals(:,10)];
-    bayestopt_.name = cellstr(strvcat(char(bayestopt_.name),M_.param_names(estim_params_.param_vals(:,1),:)));
+    if isempty(bayestopt_.name)
+        bayestopt_.name = cellstr(char(M_.param_names(estim_params_.param_vals(:,1),:)));
+    else
+        bayestopt_.name = cellstr(char(char(bayestopt_.name),M_.param_names(estim_params_.param_vals(:,1),:)));
+    end
 end
 
 bayestopt_.ub = ub;
diff --git a/matlab/set_stationary_variables_list.m b/matlab/set_stationary_variables_list.m
index ad83699243223e4c3fa5d46db87d3f4f8fcdab44..e535c934a154154e9158e8804675460650cba761 100644
--- a/matlab/set_stationary_variables_list.m
+++ b/matlab/set_stationary_variables_list.m
@@ -17,7 +17,7 @@ function [ivar,vartan,options_] = set_stationary_variables_list(options_,M_)
 % SPECIAL REQUIREMENTS
 %   None.
 
-% Copyright (C) 2007-2009 Dynare Team
+% Copyright (C) 2007-2010 Dynare Team
 %
 % This file is part of Dynare.
 %
@@ -44,7 +44,11 @@ if ~isempty(options_.unit_root_vars)
     vartan = [];
     for i=1:nvar
         if isempty(strmatch(deblank(varlist(i,:)),options_.unit_root_vars,'exact'))       
-            vartan = strvcat(vartan,varlist(i,:));
+            if isempty(vartan)
+                vartan = varlist(i,:);
+            else
+                vartan = char(vartan,varlist(i,:));
+            end
         end
     end
 else
diff --git a/matlab/simulated_moments_estimation.m b/matlab/simulated_moments_estimation.m
index e328b58707540f328b0a4e392e0e8fae10fe5475..0fd9e4ff4ee0421d4838754438a2c5af0dd8cf47 100644
--- a/matlab/simulated_moments_estimation.m
+++ b/matlab/simulated_moments_estimation.m
@@ -54,15 +54,18 @@ options.estimated_parameters.list = [];
 xparam = [];
 if ~isempty(estim_params_.var_exo)
     options.estimated_variances.idx = estim_params_.var_exo(:,1);
-    options.estimated_parameters.list = strvcat(options.estimated_parameters.list,...
-                                                M_.exo_names(options.estimated_variances.idx,:));
+    options.estimated_parameters.list = char(M_.exo_names(options.estimated_variances.idx,:));
     options.estimated_parameters.nv = rows(estim_params_.var_exo);
     xparam = [xparam; estim_params_.var_exo(:,2)];
 end
 if ~isempty(estim_params_.param_vals)
     options.estimated_parameters.idx = estim_params_.param_vals(:,1);
-    options.estimated_parameters.list = strvcat(options.estimated_parameters.list,...
-                                                M_.param_names(options.estimated_parameters.idx,:));
+    if isempty(options.estimated_parameters.list)
+        options.estimated_parameters.list = char(M_.param_names(options.estimated_parameters.idx,:));
+    else
+        options.estimated_parameters.list = char(options.estimated_parameters.list,...
+            M_.param_names(options.estimated_parameters.idx,:));
+    end
     options.estimated_parameters.np = rows(estim_params_.param_vals);
     xparam = [xparam; estim_params_.param_vals(:,2)];
 end
diff --git a/matlab/stoch_simul.m b/matlab/stoch_simul.m
index 53977a21555961ee65610131fba793b58287c66e..024a10a26d5f8b48d46b228058b584f05e30bfa5 100644
--- a/matlab/stoch_simul.m
+++ b/matlab/stoch_simul.m
@@ -79,7 +79,7 @@ if ~options_.noprint
     disp(['  Number of static variables:  ' int2str(oo_.dr.nstatic)])
     my_title='MATRIX OF COVARIANCE OF EXOGENOUS SHOCKS';
     labels = deblank(M_.exo_names);
-    headers = strvcat('Variables',labels);
+    headers = char('Variables',labels);
     lh = size(labels,2)+2;
     dyntable(my_title,headers,labels,M_.Sigma_e,lh,10,6);
     if options_.partial_information
@@ -166,9 +166,17 @@ if options_.irf
                       deblank(M_.exo_names(i,:)) ' = y(i_var(j),:);']); 
                 if max(y(i_var(j),:)) - min(y(i_var(j),:)) > 1e-10
                     irfs  = cat(1,irfs,y(i_var(j),:));
-                    mylist = strvcat(mylist,deblank(var_list(j,:)));
+                    if isempty(mylist)
+                        mylist = deblank(var_list(j,:));
+                    else
+                        mylist = char(mylist,deblank(var_list(j,:)));
+                    end
                     if TeX
-                        mylistTeX = strvcat(mylistTeX,deblank(var_listTeX(j,:)));
+                        if isempty(mylistTeX)
+                            mylistTeX = deblank(var_listTeX(j,:));
+                        else
+                            mylistTeX = char(mylistTeX,deblank(var_listTeX(j,:)));
+                        end
                     end
                 end
             end
diff --git a/matlab/stoch_simul_sparse.m b/matlab/stoch_simul_sparse.m
index 06a1e2b6d5304f72d15c4a4b25182ca17f84a8c6..6f2e45cef0995f65be8f6c25756072a05ffbcbc6 100644
--- a/matlab/stoch_simul_sparse.m
+++ b/matlab/stoch_simul_sparse.m
@@ -1,7 +1,7 @@
 function info=stoch_simul_sparse(var_list)
 % This file is a modified version of stoch_simul.m: common parts should be factorized!
 
-% Copyright (C) 2001-2009 Dynare Team
+% Copyright (C) 2001-2010 Dynare Team
 %
 % This file is part of Dynare.
 %
@@ -66,7 +66,7 @@ if ~options_.noprint
     disp(['  Number of static variables:  ' int2str(oo_dr_nstatic)])
     my_title='MATRIX OF COVARIANCE OF EXOGENOUS SHOCKS';
     labels = deblank(M_.exo_names);
-    headers = strvcat('Variables',labels);
+    headers = char('Variables',labels);
     lh = size(labels,2)+2;
     dyntable(my_title,headers,labels,M_.Sigma_e,lh,10,6);
     disp(' ')
@@ -111,7 +111,11 @@ if options_.irf
         else
             ivar(i) = i_tmp;
             if TeX
-                var_listTeX = strvcat(var_listTeX,deblank(M_.endo_names_tex(i_tmp,:)));
+                if isempty(var_listTeX)
+                    var_listTeX = deblank(M_.endo_names_tex(i_tmp,:));
+                else
+                    var_listTeX = char(var_listTeX,deblank(M_.endo_names_tex(i_tmp,:)));
+                end
             end
         end
     end
@@ -148,9 +152,17 @@ if options_.irf
                       deblank(M_.exo_names(i,:)) ' = y(ivar(j),:);']); 
                 if max(y(ivar(j),:)) - min(y(ivar(j),:)) > 1e-10
                     irfs  = cat(1,irfs,y(ivar(j),:));
-                    mylist = strvcat(mylist,deblank(var_list(j,:)));
+                    if isempty(mylist)
+                        mylist = deblank(var_list(j,:));
+                    else
+                        mylist = char(mylist,deblank(var_list(j,:)));
+                    end
                     if TeX
-                        mylistTeX = strvcat(mylistTeX,deblank(var_listTeX(j,:)));
+                        if isempty(mylistTeX)
+                            mylistTeX = deblank(var_listTeX(j,:));
+                        else
+                            mylistTeX = char(mylistTeX,deblank(var_listTeX(j,:)));
+                        end
                     end
                 end
             end
diff --git a/preprocessor/Shocks.cc b/preprocessor/Shocks.cc
index dc66b7c192fce0c5e7087abed45024dfb3f64305..750b93679c9dab4268eaf34a203fe74edeaa2e74 100644
--- a/preprocessor/Shocks.cc
+++ b/preprocessor/Shocks.cc
@@ -288,7 +288,11 @@ ConditionalForecastPathsStatement::writeOutput(ostream &output, const string &ba
   for (AbstractShocksStatement::det_shocks_t::const_iterator it = paths.begin();
        it != paths.end(); it++)
     {
-      output << "constrained_vars_ = strvcat(constrained_vars_, '" << it->first << "');" << endl;
+      if (it == paths.begin())
+        output << "constrained_vars_ = '" << it->first << "';" << endl;
+      else
+        output << "constrained_vars_ = char(constrained_vars_, '" << it->first << "');" << endl;
+
       const vector<AbstractShocksStatement::DetShockElement> &elems = it->second;
       for (int i = 0; i < (int) elems.size(); i++)
         for (int j = elems[i].period1; j <= elems[i].period2; j++)
diff --git a/preprocessor/SymbolList.cc b/preprocessor/SymbolList.cc
index 24f3df58da2110d44d2a204895c14f2841339114..af4c19114413c62466bc4f71dfa1b1051e2e1da7 100644
--- a/preprocessor/SymbolList.cc
+++ b/preprocessor/SymbolList.cc
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2003-2008 Dynare Team
+ * Copyright (C) 2003-2010 Dynare Team
  *
  * This file is part of Dynare.
  *
@@ -31,7 +31,10 @@ SymbolList::writeOutput(const string &varname, ostream &output) const
   output << varname << "=[];" << endl;
   for (vector<string>::const_iterator it = symbols.begin();
        it != symbols.end(); it++)
-    output << varname << " = strvcat(" << varname << ", '" << *it << "');" << endl;
+    if (it == symbols.begin())
+      output << varname << " = '" << *it << "';" << endl;
+    else
+      output << varname << " = char(" << varname << ", '" << *it << "');" << endl;
 }
 
 void
diff --git a/preprocessor/SymbolTable.cc b/preprocessor/SymbolTable.cc
index 2db56ae42d578b985dcce4c86193b35927cf147a..a1e0d0b1f46d31173554367a18f97ce0504ab29d 100644
--- a/preprocessor/SymbolTable.cc
+++ b/preprocessor/SymbolTable.cc
@@ -169,8 +169,8 @@ SymbolTable::writeOutput(ostream &output) const throw (NotYetFrozenException)
       output << "M_.exo_names_tex = '" << getTeXName(exo_ids[0]) << "';" << endl;
       for (int id = 1; id < exo_nbr(); id++)
         {
-          output << "M_.exo_names = strvcat(M_.exo_names, '" << getName(exo_ids[id]) << "');" << endl
-                 << "M_.exo_names_tex = strvcat(M_.exo_names_tex, '" << getTeXName(exo_ids[id]) << "');" << endl;
+          output << "M_.exo_names = char(M_.exo_names, '" << getName(exo_ids[id]) << "');" << endl
+                 << "M_.exo_names_tex = char(M_.exo_names_tex, '" << getTeXName(exo_ids[id]) << "');" << endl;
         }
     }
   if (exo_det_nbr() > 0)
@@ -179,8 +179,8 @@ SymbolTable::writeOutput(ostream &output) const throw (NotYetFrozenException)
       output << "M_.exo_det_names_tex = '" << getTeXName(exo_det_ids[0]) << "';" << endl;
       for (int id = 1; id < exo_det_nbr(); id++)
         {
-          output << "M_.exo_det_names = strvcat(M_.exo_det_names, '" << getName(exo_det_ids[id]) << "');" << endl
-                 << "M_.exo_det_names_tex = strvcat(M_.exo_det_names_tex, '" << getTeXName(exo_det_ids[id]) << "');" << endl;
+          output << "M_.exo_det_names = char(M_.exo_det_names, '" << getName(exo_det_ids[id]) << "');" << endl
+                 << "M_.exo_det_names_tex = char(M_.exo_det_names_tex, '" << getTeXName(exo_det_ids[id]) << "');" << endl;
         }
     }
   if (endo_nbr() > 0)
@@ -189,8 +189,8 @@ SymbolTable::writeOutput(ostream &output) const throw (NotYetFrozenException)
       output << "M_.endo_names_tex = '" << getTeXName(endo_ids[0]) << "';" << endl;
       for (int id = 1; id < endo_nbr(); id++)
         {
-          output << "M_.endo_names = strvcat(M_.endo_names, '" << getName(endo_ids[id]) << "');" << endl
-                 << "M_.endo_names_tex = strvcat(M_.endo_names_tex, '" << getTeXName(endo_ids[id]) << "');" << endl;
+          output << "M_.endo_names = char(M_.endo_names, '" << getName(endo_ids[id]) << "');" << endl
+                 << "M_.endo_names_tex = char(M_.endo_names_tex, '" << getTeXName(endo_ids[id]) << "');" << endl;
         }
     }
   if (param_nbr() > 0)
@@ -199,8 +199,8 @@ SymbolTable::writeOutput(ostream &output) const throw (NotYetFrozenException)
       output << "M_.param_names_tex = '" << getTeXName(param_ids[0]) << "';" << endl;
       for (int id = 1; id < param_nbr(); id++)
         {
-          output << "M_.param_names = strvcat(M_.param_names, '" << getName(param_ids[id]) << "');" << endl
-                 << "M_.param_names_tex = strvcat(M_.param_names_tex, '" << getTeXName(param_ids[id]) << "');" << endl;
+          output << "M_.param_names = char(M_.param_names, '" << getName(param_ids[id]) << "');" << endl
+                 << "M_.param_names_tex = char(M_.param_names_tex, '" << getTeXName(param_ids[id]) << "');" << endl;
 
           if (getName(param_ids[id]) == "dsge_prior_weight")
             output << "options_.dsge_var = 1;" << endl;
@@ -252,7 +252,10 @@ SymbolTable::writeOutput(ostream &output) const throw (NotYetFrozenException)
       output << "options_.varobs = [];" << endl;
       for (vector<int>::const_iterator it = varobs.begin();
            it != varobs.end(); it++)
-        output << "options_.varobs = strvcat(options_.varobs, '" << getName(*it) << "');" << endl;
+        if (it == varobs.begin())
+          output << "options_.varobs = '" << getName(*it) << "';" << endl;
+        else
+          output << "options_.varobs = char(options_.varobs, '" << getName(*it) << "');" << endl;
 
       output << "options_.varobs_id = [ ";
       for (vector<int>::const_iterator it = varobs.begin();