C++读写matlab数据.mat文件
2013-08-22 11:19
483 查看
我的计算机环境是win8 64位系统,VS2010,matlab R2010b
step1:
新建项目 项目属性设置:
VC++目录
->包含目录 添加:
MATLAB\R2010b\extern\include
MATLAB\R2010b\extern\include\win64
->库目录 添加:
MATLAB\R2010b\extern\lib\win64\microsoft
链接器
->输入->附加依赖库 添加:
libmat.lib
libmx.lib
libmex.lib
libeng.lib
step2:
计算机环境变量path 添加:
MATLAB\R2010b\bin\win64;
step3:
由于所安装的matlab为64位,要调用其函数,需要将工程转换为X64
vs2010菜单
生成->配置管理器->平台:X64
项目属性
链接器->高级->目标计算机:
MachineX64(/MACHINE:X64)
step4:
关闭vs2010重新打开项目,测试(顺便用了Eigen库)
// 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;
}
step1:
新建项目 项目属性设置:
VC++目录
->包含目录 添加:
MATLAB\R2010b\extern\include
MATLAB\R2010b\extern\include\win64
->库目录 添加:
MATLAB\R2010b\extern\lib\win64\microsoft
链接器
->输入->附加依赖库 添加:
libmat.lib
libmx.lib
libmex.lib
libeng.lib
step2:
计算机环境变量path 添加:
MATLAB\R2010b\bin\win64;
step3:
由于所安装的matlab为64位,要调用其函数,需要将工程转换为X64
vs2010菜单
生成->配置管理器->平台:X64
项目属性
链接器->高级->目标计算机:
MachineX64(/MACHINE:X64)
step4:
关闭vs2010重新打开项目,测试(顺便用了Eigen库)
// 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;
}
相关文章推荐
- C++读写matlab的mat文件 结合opencv Mat结构测试
- C++ 读写Matlab的mat文件的注意事项
- C++读写.mat文件的方法——C配置MATLAB部分
- 用C/C++读取MATLAB中mat文件中的Cell数据
- MATLAB和C++数据交类实例---读取mat文件
- C++ 简单读写文本文件、统计文件的行数、读取文件数据到数组
- Matlab中二进制数据文件的读写
- MATLAB中文件的读写和数据的导入导出
- C++ 简单读写文本文件、统计文件的行数、读取文件数据到数组
- matlab读写raw二进制数据 bin文件
- C++ 简单读写文本文件、统计文件的行数、读取文件数据到数组
- 将MATLAB的变量数据导入到C/C++程序中的方法!
- Matlab读写hdf5数据
- 运用matlab对excel表格数据的读写方法
- Matlab中导入文本文件中的数据 矩阵合并 以及C++中删除文件操作
- C++ 简单读写文本文件、统计文件的行数、读取文件数据到数组
- matlab中关于读取.mat文件中的奇偶行数据问题
- [C++]读写txt文件和从txt文件中读取数据写入数组中
- C++读写txt文件方式以及基于opencv的Mat数据类型读写txt文件类型