最近在编写C++程序的过程中,需要使用matlab生成的.mat文件,于是查找了基本使用方法。
我的计算机环境是win7
一、工程配置:
1.VC++目录->包含目录
MATLAB\R2010b\extern\include
MATLAB\R2010b\extern\include\win64
2.C/C++->常规->附加包含目录
3.链接器->输入->附加依赖库
libmat.lib
libmx.lib
libmex.lib
libeng.lib
由于所安装的matlab为64位,要调用其函数,需要将工程转换为X64
4.顶菜单->生成->配置管理器->平台:X64
5.链接器->高级->目标计算机:
MachineX64(/MACHINE:X64)
6.计算机环境变量->path
E:\DevTools\MATLAB\R2010b\extern\lib\win64\microsoft;
E:\DevTools\MATLAB\R2010b\bin\win64;
#include "stdafx.h"
#include <iostream>
#include "mat.h"
#include <matrix.h>
#define N 5
#define M 5
int main(){
/*int i,j;
MATFile *pmatFile = matOpen("matName.mat","w");
mxArray *pMxArray = NULL;
pMxArray = mxCreateDoubleMatrix(N, M, mxREAL);
double* datas = NULL;
datas = (double*)mxMalloc(N*M*sizeof(double));
for(i=0;i<M;i++)
for(j=0;j<N;j++)
datas[i*M+j]=2;
mxSetData(pMxArray, datas);
matPutVariable(pmatFile, "datas", pMxArray);
matClose(pmatFile);
*/
MATFile *pmatFile = NULL;
pmatFile = matOpen("matName.mat","r");
mxArray *pMxArray = NULL;
pMxArray = matGetVariable(pmatFile,"datas");
double *pdata;
pdata = (double*)mxGetData(pMxArray);
int m,n;
m = mxGetM(pMxArray);
n = mxGetN(pMxArray);
printf("\n m=%d n=%d\n",m,n);
int *pa;
pa=(int*)malloc(m*n*sizeof(int));
for(int i=0; i<n; i++)
for (int j=0; j<m; j++)
{
pa[i*m+j] = (int)pdata[i*m+j];
printf("%d\n",pa[i*m+j]);
}
matClose(pmatFile);
mxFree(pdata);
free(pa);
return 0;
}