From 6db9f1035351640d14775aca4ef42f79f533e42f Mon Sep 17 00:00:00 2001
From: Houtan Bastani <houtan@dynare.org>
Date: Mon, 9 Mar 2015 17:58:06 +0100
Subject: [PATCH] preprocessor: remove use of tables completely as they were
 introduced in Matlab R2013b. #824

---
 matlab/global_initialization.m |  2 +-
 preprocessor/ComputingTasks.cc | 18 ++++++++----------
 2 files changed, 9 insertions(+), 11 deletions(-)

diff --git a/matlab/global_initialization.m b/matlab/global_initialization.m
index 85844b75bf..9e75c59953 100644
--- a/matlab/global_initialization.m
+++ b/matlab/global_initialization.m
@@ -363,7 +363,7 @@ estimation_info.structural_innovation_corr_prior_index = {};
 estimation_info.structural_innovation_corr_options_index = {};
 estimation_info.structural_innovation_corr.range_index = {};
 estimation_info.joint_parameter_prior_index = {};
-estimation_info.joint_parameter = table(0);
+estimation_info.joint_parameter = {'index','domain','interval','mean','median','mode','shape','shift','stdev','truncate','variance'};
 options_.initial_period = NaN; %dates(1,1);
 options_.dataset.file = [];
 options_.dataset.series = [];
diff --git a/preprocessor/ComputingTasks.cc b/preprocessor/ComputingTasks.cc
index 5194cd7f7a..e16d11354e 100644
--- a/preprocessor/ComputingTasks.cc
+++ b/preprocessor/ComputingTasks.cc
@@ -2157,7 +2157,7 @@ JointPriorStatement::writeOutput(ostream &output, const string &basename) const
   writeOutputHelper(output, "truncate", lhs_field);
   writeOutputHelper(output, "variance", lhs_field);
 
-  output << "estimation_info.joint_parameter_tmp = table(key, ..." << endl
+  output << "estimation_info.joint_parameter_tmp = [key, ..." << endl
          << "    " << lhs_field << ".domain , ..." << endl
          << "    " << lhs_field << ".interval , ..." << endl
          << "    " << lhs_field << ".mean , ..." << endl
@@ -2167,15 +2167,9 @@ JointPriorStatement::writeOutput(ostream &output, const string &basename) const
          << "    " << lhs_field << ".shift , ..." << endl
          << "    " << lhs_field << ".stdev , ..." << endl
          << "    " << lhs_field << ".truncate , ..." << endl
-         << "    " << lhs_field << ".variance, ..." << endl
-         << "    'VariableNames',{'index','domain','interval','mean','median','mode','shape','shift','stdev','truncate','variance'});" << endl;
-
-  output << "if rows(estimation_info.joint_parameter)==1 && columns(estimation_info.joint_parameter)==1" << endl
-         << "  estimation_info.joint_parameter = estimation_info.joint_parameter_tmp;" << endl
-         << "else" << endl
-         << "  estimation_info.joint_parameter = [estimation_info.joint_parameter; estimation_info.joint_parameter_tmp];" << endl
-         << "end" << endl
-         << "clear estimation_info.joint_parameter_tmp;" << endl;
+         << "    " << lhs_field << ".variance];" << endl
+         << "estimation_info.joint_parameter = [estimation_info.joint_parameter; estimation_info.joint_parameter_tmp];" << endl
+         << "estimation_info=rmfield(estimation_info, 'joint_parameter_tmp');" << endl;
 }
 
 void
@@ -2183,10 +2177,14 @@ JointPriorStatement::writeOutputHelper(ostream &output, const string &field, con
 {
   OptionsList::num_options_t::const_iterator itn = options_list.num_options.find(field);
   output << lhs_field << "." << field << " = {";
+  if (field=="variance")
+    output << "{";
   if (itn != options_list.num_options.end())
     output << itn->second;
   else
     output << "{}";
+  if (field=="variance")
+    output << "}";
   output << "};" << endl;
 }
 
-- 
GitLab