使用matlab的MAT.H(c读取mat文件)
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。
vs配置matlab文件
- 下载好matlab ,找到matlab的目录(假设存放在E:\matlab);
- 配置环境变量 ;
找到下面的路径
E:\matlab\bin
E:\matlab\bin\win64
添加进环境变量
操作方法:右键点击我的电脑>>打开属性>>高级系统设置>>环境变量
3.配置VS
代码
#include <iostream>
#include <mat.h>
using namespace std;
int main()
{
MATFile *pmatFile = NULL;
mxArray *pMxArray = NULL;
// 读取.mat文件(例:mat文件名为"initUrban.mat",其中包含"initA")
double *initA;
pmatFile = matOpen("yrdn1.mat", "r"); //只读的方式打开文件
pMxArray = matGetVariable(pmatFile, "DTM"); //使用matGetVariable函数读取mat文件中的变量
initA = (double*)mxGetData(pMxArray);
int M = mxGetM(pMxArray);
int N = mxGetN(pMxArray);
for (int i = 0; i < M; i++)
{
for (int j = 0; j < N; j++)
{
//cout << initA[M*j + i] << " ";
}
}
cout << M * N << " " << M << " " << N << endl;
matClose(pmatFile);
mxFree(initA);
}
/*1.使用matOpen函数打开mat文件
MATFile *matOpen(const char *filename,const char *mode)
mode:
r:以只读方式打开
u:更新模式,可读可写,但是如果要打开的数据文件不存在,也不会创建新的文件
w:以写入方式打开,只能写如入,如果要打开的数据文件不存在,则创建一个新的文件
2.使用matGetVariable函数读取mat文件中的变量
mxArray * matGetVariable(MATFile * pMF, const char * name);
读取名为name的变量,返回一个数据阵列指针
3.使用mxGetData函数获取数据阵列中的数据
void *mxGetData(const mxArray *pa );
返回时需要使用强制类型转换。
4.使用mxGetM和mxGetN函数获取数据阵列矩阵的维数
size_t mxGetM(const mxArray *pa);
size_t mxGetN(const mxArray *pa);
5.使用mxSetData函数将变量存入数据阵列
void mxSetData( mxArray *pa, void *newdata );
6.使用matPutVariable函数将数据阵列存入到mat文件中
int matPutVariable(MATFile * pMF, const char * name, const mxArray * pA);
存入成功返回0,存入出错返回非0
7.由于malab中矩阵的存储是按列存储,与c中不同,所以从mat文件中获取的矩阵需要重新排列。生成mat文件时,同样要注意。 */