运行环境:Win10(64位)+VS2010(64位)旗舰版+Matlab R2012b(64位)
一.环境配置
1.计算机环境变量配置
在path中添加
X:\XXX\MATLAB\R2012b\extern\lib\win64\microsoft;
X:\XXX\MATLAB\R2012b\extern\lib\win64
2.工程变量配置
右键工程名–>属性
(1).C/C++–>常规–>附加包含目录 添加:
X:\XXX\MATLAB\R2012b\extern\include
X:\XXX\MATLAB\R2012b\extern\include\win64
(2).链接器–>常规–>附加库目录 添加:
X:\XXX\MATLAB\R2012b\extern\lib\win64\microsoft
X:\XXX\MATLAB\R2012b\extern\lib\win32\microsoft
(3).链接器–>输入–>附加依赖库 添加:
libmat.lib libmx.lib libmex.lib libeng.lib
(4).配置管理器–>新建活动解决方案平台–>命名X64
二、新建工程和代码实现
1.新建–>项目–>Win32控制台应用程序–>空文档
2.添加.cpp源文件
3.输入代码
#include "mat.h"
#include "matrix.h"
#include <iostream>
using namespace std;
#pragma comment(lib,"libmat.lib")
#pragma comment(lib,"libmx.lib")
int main()
{
MATFile *pmatFile = NULL;
mxArray *pReadArray = NULL;
mxArray *pWriteArray = NULL;
const char **dir;
int ndir; //矩阵的数目
const char *name; //矩阵的名称
const char *file //文件路径
// 读取.mat文件(mat文件名为"a.mat",其中包含"m"名称的矩阵)
double *data;
file = "C:\\Users\\ASUS\\Desktop\\a.mat";
pmatFile =matOpen(file,"r");
if (pmatFile == NULL) {
printf("Error opening file %s\n", file);
return(1);
}
dir = (const char **)matGetDir(pmatFile, &ndir);
if (dir == NULL) {
printf("Error reading directory of file %s\n", file);
return(1);
} else {
printf("Directory of %s:\n", file);
for (i=0; i < ndir; i++)
printf("%s\n",dir[i]);
}
mxFree(dir);
pReadArray = matGetVariable(pmatFile, "m");
size_t M = mxGetM(pReadArray); //矩阵行数
size_t N = mxGetN(pReadArray); //矩阵列数
//第一种获取.mat中矩阵的方法
data = = (double*) mxGetData(pReadArray);
//第二种获取数据的方法
memcpy((double*)data, (double*)(mxGetPr(pReadArray)), sizeof(data)*M*N);
for (int row=0; row<M; row++)
for (int col=0; col<N; col++)
cout<<"序号:"<<M*j+i<<"的数据为:"<<outA[M*j+i]<<endl;
//获取数据时是以列获取的
matClose(pmatFile);
// 生成.mat文件
pmatFile =matOpen("C:\\Users\\ASUS\\Desktop\\K.mat","w");
//创建一个M*N的矩阵
pWriteArray = mxCreateDoubleMatrix(M, N, mxREAL);
//把data的值赋给pWriteArray指针
memcpy((void *)(mxGetPr(pWriteArray)), (void *)data, sizeof(data)*M*N);
//给矩阵命名为A
matPutVariable(pmatFile, "A", pWriteArray);
matClose(pmatFile);
system("pause");
return 0;
}
本文地址:VS2010 C++读写.mat格式文件
参考网址: