logMHMCMCposterior: under Octave, do load/save MAT files, because the "mat.h" interface does not exist

time-shift
Sébastien Villemot 2010-10-28 10:15:53 +02:00
parent 2e87b031d8
commit 8d3d004105
1 changed files with 11 additions and 2 deletions

View File

@ -28,7 +28,9 @@
#include "RandomWalkMetropolisHastings.hh"
#include "mex.h"
#include "mat.h"
#ifdef MATLAB_MEX_FILE
# include "mat.h"
#endif
#if defined(_WIN32) || defined(__CYGWIN32__) || defined(WINDOWS)
# define DIRECTORY_SEPARATOR "\\"
@ -111,9 +113,11 @@ sampleMHMC(LogPosteriorDensity &lpd, RandomWalkMetropolisHastings &rwmh,
double dsum, dmax, dmin, sux = 0, jsux = 0;
std::string mhFName;
std::stringstream ssFName;
#ifdef MATLAB_MEX_FILE
MATFile *drawmat; // MCMC draws output file pointer
FILE *fidlog; // log file
int matfStatus;
#endif
FILE *fidlog; // log file
size_t npar = estParams.getSize();
Matrix MinMax(npar, 2);
const mxArray *myinputs = mexGetVariablePtr("caller", "myinputs");
@ -179,6 +183,7 @@ sampleMHMC(LogPosteriorDensity &lpd, RandomWalkMetropolisHastings &rwmh,
{
jloop = jloop+1;
#ifdef MATLAB_MEX_FILE
if ((load_mh_file != 0) && (fline(b) > 1) && OpenOldFile[b])
{
// load(['./' MhDirectoryName '/' ModelName '_mh' int2str(NewFile(b)) '_blck' int2str(b) '.mat'])
@ -203,6 +208,7 @@ sampleMHMC(LogPosteriorDensity &lpd, RandomWalkMetropolisHastings &rwmh,
OpenOldFile[b] = 1;
}
} // end if
#endif
ssbarTitle.clear();
ssbarTitle.str("");
ssbarTitle << "Please wait... Metropolis-Hastings " << b << "/" << nBlocks << " ...";
@ -258,6 +264,8 @@ sampleMHMC(LogPosteriorDensity &lpd, RandomWalkMetropolisHastings &rwmh,
mxDestroyArray(waitBarRhs[2]);
}
#ifdef MATLAB_MEX_FILE
// % Now I save the simulations
// save draw 2 mat file ([MhDirectoryName '/' ModelName '_mh' int2str(NewFile(b)) '_blck' int2str(b) '.mat'],'x2','logpo2');
ssFName.clear();
@ -283,6 +291,7 @@ sampleMHMC(LogPosteriorDensity &lpd, RandomWalkMetropolisHastings &rwmh,
exit(1);
}
matClose(drawmat);
#endif
// save log to fidlog = fopen([MhDirectoryName '/metropolis.log'],'a');
ssFName.str("");