C++读取mat文件的详细步骤(matGetVariable函数使用)

环境
Win10 + VS2017 + matlab2016a

1、配置vs的环境
需要注意,matlab的版本不要太新,否则可能会出现问题。本人刚开始用的matlab2018b,所有环境均已配置完成,但是出现找不到exe之类的问题,查百度,有人说是版本匹配问题,后面转换为matlab2016a,成功运行。
下面开始分享本次使用过程中的配置过程及遇到的问题
首先配置vs:
可以参看这篇文章:https://zhuanlan.zhihu.com/p/23334508,基本步骤如下:
在这里插入图片描述
如果配置成功,在vs中包含<mat.h>不会出现错误。
在这里插入图片描述
接下来用到下面这几个函数
1、matOpen(mat文件名字,打开模式)
2、matGetVariable(上面返回的指针,“Val”);这里的val是指mat文件保存时的名字。如下图,A07300.mat是文件名字,val 是读入内存中的变量名字
3、mxGetData() 获取数据
4、M为行,N为列
在这里插入图片描述

在这里插入图片描述

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
使用 HDF5 库打开 Matlab 的 .mat 文件读取变量 data,可以按照以下步骤进行: 1. 安装 HDF5 库 要在 C++使用 HDF5 库,需要先在计算机上安装 HDF5 库。可以从 HDF Group 的官方网站下载 HDF5 库,并按照文档中的说明进行安装。 2. 打开 .mat 文件 要打开 .mat 文件,需要使用 HDF5 库中的 H5Fopen() 函数。该函数的原型如下: ``` hid_t H5Fopen(const char *filename, unsigned flags, hid_t access_plist_id); ``` 其中,filename 是 .mat 文件的路径;flags 是打开文件的方式,通常设为 H5F_ACC_RDONLY 表示只读;access_plist_id 是访问文件的属性列表,通常设为 H5P_DEFAULT。 示例代码: ``` hid_t file_id = H5Fopen("example.mat", H5F_ACC_RDONLY, H5P_DEFAULT); ``` 3. 读取数据 要读取变量 data,需要先获取该变量在 .mat 文件中的路径。可以使用 Matlab 命令 whos 命令查看变量的路径。假设变量 data 的路径为 /data,可以按照以下步骤读取变量: (1)使用 H5Oopen() 函数打开变量所在的组: ``` hid_t group_id = H5Oopen(file_id, "/data", H5P_DEFAULT); ``` (2)使用 H5Dopen() 函数打开变量: ``` hid_t dataset_id = H5Dopen(group_id, "data", H5P_DEFAULT); ``` (3)使用 H5Dread() 函数读取变量的数据: ``` double data[N]; H5Dread(dataset_id, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, H5P_DEFAULT, data); ``` 其中,N 是变量 data 的元素个数,H5T_NATIVE_DOUBLE 表示数据类型是双精度浮点数。 完整的示例代码: ``` #include <hdf5.h> #include <iostream> using namespace std; int main() { // 打开 .mat 文件 hid_t file_id = H5Fopen("example.mat", H5F_ACC_RDONLY, H5P_DEFAULT); // 打开变量所在的组 hid_t group_id = H5Oopen(file_id, "/data", H5P_DEFAULT); // 打开变量 hid_t dataset_id = H5Dopen(group_id, "data", H5P_DEFAULT); // 读取变量的数据 const int N = 10; double data[N]; H5Dread(dataset_id, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, H5P_DEFAULT, data); // 输出数据 for (int i = 0; i < N; i++) { cout << data[i] << " "; } cout << endl; // 释放资源 H5Dclose(dataset_id); H5Oclose(group_id); H5Fclose(file_id); return 0; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值