// com_mat_read.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "mat.h"
#include "Eigen/Dense"
#include "iostream"
using Eigen::MatrixXd;
using namespace Eigen;
using namespace std;
void readmat(const char *filename,const char *variablename,MatrixXd & matdata)
{
mwSize M,N;
double *initA;
const char *myfile;
MATFile *pmatFile = NULL;
mxArray *pMxArray = NULL;
myfile=filename;
pmatFile = matOpen(myfile,"r");
pMxArray = matGetVariable(pmatFile, variablename);
initA = (double*) mxGetData(pMxArray);
M = mxGetM(pMxArray);
N = mxGetN(pMxArray);
MatrixXd inputux(M,N);
printf("%d * %d matrix:datamat\n",M,N);
for (int i=0; i<M; i++)
for (int j=0; j<N; j++)
inputux(i,j) = initA[M*j+i];
matClose(pmatFile);
mxFree(initA);
matdata=inputux;
}
void test()
{
char filename[2][20]={"inputx.mat","inputP.mat"};
char variablename[2][20]={"inputx","inputP"};
MatrixXd A[2];
for(int i=0;i<2;++i)
{
readmat(filename[i],variablename[i],A[i]);
}
//cout<<A[0]<<endl<<A[1]<<endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
test();
return 0;
}
//
#include "stdafx.h"
#include "mat.h"
#include "Eigen/Dense"
#include "iostream"
using Eigen::MatrixXd;
using namespace Eigen;
using namespace std;
void readmat(const char *filename,const char *variablename,MatrixXd & matdata)
{
mwSize M,N;
double *initA;
const char *myfile;
MATFile *pmatFile = NULL;
mxArray *pMxArray = NULL;
myfile=filename;
pmatFile = matOpen(myfile,"r");
pMxArray = matGetVariable(pmatFile, variablename);
initA = (double*) mxGetData(pMxArray);
M = mxGetM(pMxArray);
N = mxGetN(pMxArray);
MatrixXd inputux(M,N);
printf("%d * %d matrix:datamat\n",M,N);
for (int i=0; i<M; i++)
for (int j=0; j<N; j++)
inputux(i,j) = initA[M*j+i];
matClose(pmatFile);
mxFree(initA);
matdata=inputux;
}
void test()
{
char filename[2][20]={"inputx.mat","inputP.mat"};
char variablename[2][20]={"inputx","inputP"};
MatrixXd A[2];
for(int i=0;i<2;++i)
{
readmat(filename[i],variablename[i],A[i]);
}
//cout<<A[0]<<endl<<A[1]<<endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
test();
return 0;
}