QT Creator使用matlab库文件读取.mat文件数据

  • 一、环境配置
  • 二、关于编程介绍
  • 三、关于使用函数的介绍
    • 1:关于假设数据类型介绍
    • 2:关于使用函数介绍

一、环境配置


第一步先点开我的电脑属性,然后进入如上界面,之后点开高级系统设置,之后点开环境变量

在之后点开Path

找到matlab安装目录下面的这几个文件添加进去
再之后配置QT,在pro文件后面添加如下几行代码

INCLUDEPATH += D:\MATLAB\matlab\extern\include\
LIBS += -LD:\MATLAB\matlab\extern\lib\win64\microsoft\ -llibeng
LIBS += -LD:\MATLAB\matlab\extern\lib\win64\microsoft\ -llibmx
LIBS += -LD:\MATLAB\matlab\extern\lib\win64\microsoft\ -llibmat

然后在需要使用的头文件部分添加如下的头文件

 #include< stdio.h> #include< stdlib.h> #include"mat.h"#include"matrix.h"

这里有几个需要一定要注意的,首先第一个这个
我在网上看到按照这样的添加lib文件,但是我没成功
还有如下的这样把-llibXXX放在开头,这样的我也试过我没有成功
还有最重要要的是这个三个lib库加入的顺序不能错了,一定要按照我的先-llibeng,之后再-llibmx,最后在-llibmat这样子,不然之后写程序时候,会有些函数无法使用,虽然没找到原因,暂时先这样解决了问题,如果有人知道原因欢迎交流下。

二、关于编程介绍

 //打开选择文件对话框,获取文件路径
QString File_Path = QFileDialog::getOpenFileName(this,                                   "open","../","source(*.cpp *.h *.DAT *.mat);;Text(*.txt);;all(*.*)");
QByteArray ba = File_Path.toLatin1();
const char *rootFile = ba.data();
MATFile *pmatFile = matOpen(rootFile, "r");
if (pmatFile == NULL){QMessageBox::warning(NULL,tr("文件打开失败"),tr("mat文件打开失败"),QMessageBox::Yes);return;}

这里我是先打开选择文件的对话框,然后找到需要读取的文件路径,转化为函数需要的数据格式,通过下面函数把这个mat文件打开。
matOpen(rootFile, “r”);

  // 获取文件中变量var;
mxArray* Array1 = matGetVariable(pmatFile, "RBR");  //先与变量绑定
mxArray* pF = mxGetField(Array1,0,"data");          //再获取其中域的数据
matClose(pmatFile);
// 获取矩阵数据行数;
int row = mxGetM(pF);
qDebug() << row<<endl;
// 获取矩阵数据列数;
int column = mxGetN(pF);
qDebug() << column <<endl;

这里要对变量跟域有个概念
比如我这个数据里面只有一个变量,那么我首先与变量绑定
mxArray* Array1 = matGetVariable(pmatFile, “RBR”);
我这个变量打开又有这么多域,那么我想要data这个域里面的数据,通过这个函数,再绑定这个变量里面的域的数据
mxArray* pF = mxGetField(Array1,0,“data”); //再获取其中域的数据
之后就可以通过这个函数获取其中域中的数据。

 // 获取数据;
double *Data = (double*)mxGetData(pF);

之后最主要是通过下面的一个for循环把数据取出来

for(int i=3*row;i<4*row;i++)  //获取第四列的所有数据
{depth.append(Data[i]);  //添加数据
}
qDebug() <<"深度数据添加完毕"<<endl;
for(int i=9*row;i<10*row;i++)
{c_speed.append(Data[i]);   //添加声速数据
}qDebug() <<"声速数据添加完毕"<<endl;

三、关于使用函数的介绍

1:关于假设数据类型介绍

Name Value
A 4x5 double
B 2x4x3 double
C 1x1 struct

A代表是一个4x5的矩阵
B代表是一个2x4x3的矩阵
C代表是一个结构体
里面有域与值

Field value
A_fileld 400x50 double
B_fileld 200x50 double

域A_fileld是一个400x50的一个矩阵
域B_fileld是一个200x50的一个矩阵

2:关于使用函数介绍

a. matOpen:打开.mat文件。如果想打开文件“data.mat”,则MATFile pMF = matOpen(“data.mat”,”r”);

b. matClose:关闭*.mat文件。如果想关闭文件“data.mat”,则matClose(pMF);

c. matGetVariable:获取变量,对应于表1中的“Name”。如果想获取变量“A”,则mxArray* pA = matGetVariable(pMF,”A”);

d. matGetPr:获取变量的实部数据。如果想获取变量“A”的实部,则double* pAReal = mxGetPr(pA);

e. mxGetNumberOfDimensions:返回变量的维度。如果想获取变量“A的维度,则int D = mxGetNumberOfDimensions(pA)

f. mxGetM:获取变量的行数。如果想获取变量“mat3D”的行数,则 int M = mxGetM(pA);此时M = 2;对于变量“mat2D”,M = 4

g. mxGetN:获取变量在mxArray中的列数。

h. mxGetField:获取结构体中的域,对应于表2中的“Field”。假设pS已经指向变量“C”,如果想获取域“A_fileld ”,则mxArray* pF = mxGetField(pS,0,”A_fileld ”);

QT Creator使用matlab库文件读取.mat文件数据相关推荐

  1. python读取 .mat 文件(matlab文件)

    python读取 .mat 文件(matlab文件)和 scipy库包的使用(4-20181224) 一.python调勇scipy库读取.mat文件 1.使用例子1 2. 使用例子2 二.scipy ...

  2. 使用matlab的MAT.H(c读取mat文件)

    使用matlab的MAT.H(c读取mat文件) 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页.如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Mark ...

  3. matlab如何读取.mat文件,matlab中读取mat文件

    Matlab 训练好的 BP 神经网络如何保存和读取方法 附实例说 (明)看到论坛里很多朋友都在提问如何存储和调用已经训练好的神经网络. 本人前几天也遇到了这样的问题,...... 2. 2 HDF ...

  4. matlab load失败,MATLAB读取文件出错:错误使用 load 无法读取 MAT 文件

    错误使用 load 无法读取 MAT 文件 C:\XX\MathWorks\MATLAB\R2018a\matlabprefs.mat.不是二进制 MAT 文件.请尝试执行 load -ASCII 以 ...

  5. matlab之保存和读取mat文件

    保存为mat文件 save(filename, var); % 保存var指定的变量,如果不指定,将保存工作区内的所有变量 save(filename, var, fmt); % 按fmt的文件格式保 ...

  6. matlab读取mat文件,保存为txt

    在matlab中打开该mat文件,双击直到看到workspace中显示相应的变量名称和变量值.然后使用点号(.)就可以访问变量中存储的各个子变量的值.比如imdb.dob # matlab code ...

  7. MATLAB读取mat文件,遍历里面所有数据

    把数据保存为mat文件 将很多不同类型的数据保存到同一个mat文件里,只需用save命令即可,如下: A = [1 2 3; 4 5 6; 7 8 9]; B = [1 0; 0 1]; C = 'A ...

  8. Qt Creator与matlab混合编程

    Qt Creator与matlab混合编程 引言:项目要求在Qt平台下搭建基于有限元算法的光学仿真平台,首先需要进行网格划分的实现.由于网格划分算法在matlab平台下已经有非常成熟的工程以及代码,如 ...

  9. C | 使用C语言读取.mat文件

    目录 前言 一.使用matio读取.mat文件 1. matio_user_guide章节设置 2. 下载地址 二.利用库文件在其他工程实现读取.mat 1.导入库和头文件 2. 打开mat文件 3. ...

最新文章

  1. VMware卸载虚拟机
  2. linux下makefile
  3. 【爬虫、算法】基于Dijkstra算法的武汉地铁路径规划!
  4. 前端学习(2223):react之jsx的样式和注释(2)
  5. python os.access_os.access(path, mode)
  6. 嵌入式linux加载引导内核和根文件系统的方法
  7. 写个脚本快速启动前后端
  8. 解读mysql的索引和事务的正确姿势
  9. NLP学习—12.Seq2Seq模型与Attention机制
  10. matlab 增量式,matlab增量式pid仿真
  11. 从0开始,使用豆瓣数据集做一个基于FM和逻辑回归的电影推荐系统
  12. class0:计算机的潜意识——机器学习
  13. keil5——安装教程附资源包
  14. 平台规则更改对于淘宝客的影响
  15. PV、UV、UIP、VV、CPC、CPM、RPM、CTR啥意思
  16. 11月最新非主流男生混搭头像一组_我的爱不再能分给你
  17. 推荐算法之AFM模型(注意力机制的引入)
  18. TexturePacker命令行拉起参数
  19. 10个程序员最喜欢的 HTML和CSS 等在线代码编辑器——pow_na的博客
  20. 开源真香 离线识别率高 Python 人脸识别系统

热门文章

  1. PAT甲级1130 Infix Expression:[C++题解]中缀表达式、二叉树中序遍历、dfs
  2. 安卓makefile与linux,分析linux make命令与Makefile的区别
  3. mysql 驱动包 bin 的意思_mysql连接数据库,用下面代码,为什么找不到驱动呢?? lib下是mysql-connector-java-5.1.15-bin.jar...
  4. php整蛊关机代码,整人代码大全
  5. php之二叉树,PHP数据结构之实现链式二叉树与遍历
  6. 计算机房电源解决方案,apcups电源小型机房电源解决方案
  7. edHat linux光盘引导,Red Hat Linux 9光盘启动安装过程
  8. linux命令全集,Linux命令全集
  9. MySQL中的数据查询
  10. mysql主程序目录_MySQL™ 参考手册(目录)