QT 中如何保存matlab 能打开的.mat数据矩阵!

news2025/2/4 15:05:30

Windows 上安装并使用 MATIO 库来保存 MATLAB 格式的 .mat 文件,需要进行以下步骤:

1. 下载并安装 CMake

MATIO 使用 CMake 构建项目,因此你需要先安装 CMake。

  • 前往 CMake 官网下载适用于 Windows 的安装程序并安装。

2. 下载 MATIO 库源码

  • 访问 MATIO 的 GitHub 页面 或 MATIO 的 SourceForge 页面 下载库的源码。
  • 解压下载的源码到一个方便的位置。

3. 安装依赖项

MATIO 依赖于 zlibhdf5,你需要安装它们并将其配置在 Windows 上:

(a) 安装 zlib
  • 从 zlib 官网下载适用于 Windows 的 zlib,或者可以在 GitHub 上找到源码。
  • zlib 源码解压到某个文件夹,并用 CMake 生成 Windows 平台的项目文件,然后用 Visual Studio 编译。
  • 这里可参考Windows中zlib的安装与配置_zlib windows-CSDN博客
(b) 安装 hdf5
  • 从 HDF5 官网下载适用于 Windows 的 HDF5 库。
  • 按照 HDF5 提供的安装说明进行操作,确保在编译时提供正确的路径。

4. 配置并编译 MATIO

一旦你拥有了 zlibhdf5,就可以通过以下步骤来配置并编译 MATIO

  1. 打开 CMake 并设置 MATIO 的源码路径和生成二进制文件的输出路径。
  2. 点击“Configure”按钮,选择你的生成工具(通常是 Visual Studio)。
  3. 在配置过程中,CMake 会要求你指定 zlibhdf5 的路径。设置好这两个库的路径后,点击“Generate”。
  4. 打开生成的 Visual Studio 解决方案,编译 MATIO。

5. 将 MATIO 集成到你的项目

编译成功后,MATIO 库会生成 .lib.dll 文件。你可以将这些库文件和头文件集成到你的项目中:

  1. 在项目的编译设置中,添加 MATIO 的包含路径以及 zlibhdf5 的路径。
  2. MATIO.lib 文件添加到链接器设置中。
  3. 确保在运行程序时,MATIO.dll 文件位于可执行文件所在目录或系统的路径中。
INCLUDEPATH +=$$PWD/include/matio
INCLUDEPATH +=$$PWD/include
LIBS += $$PWD/lib/libmatio.lib

 其中用到的dill

 lib

其中用到的

void PhaseUnwrapper::saveMatrixToMat(const cv::Mat& mat, const std::string& filename) {

    mat_t *matfp = Mat_CreateVer(filename.c_str(), NULL, MAT_FT_MAT5);  // 使用 MATLAB 5.x 格式

    if (matfp == NULL) {
        throw std::runtime_error("无法创建MAT文件: " + filename);
    }

    // 转换为double类型
        cv::Mat mat_double;
        if (mat.depth() != CV_64F) {
            mat.convertTo(mat_double, CV_64F);  // 转换为双精度浮点型
        } else {
            mat_double = mat;
        }

        // 获取行和列
        int rows = mat_double.rows;
        int cols = mat_double.cols;
        size_t total_elements = static_cast<size_t>(rows) * static_cast<size_t>(cols);

        // 线性化存储数据
        std::vector<double> mat_data(total_elements);
        for (int i = 0; i < rows; ++i) {
            for (int j = 0; j < cols; ++j) {
                mat_data[i + j * rows] = mat_double.at<double>(i, j);  // 以列主序存储数据
            }
        }

        // 定义维度
        size_t dims[2] = { static_cast<size_t>(rows), static_cast<size_t>(cols) };

        // 创建MAT变量
        matvar_t *matvar = Mat_VarCreate("matrix", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, mat_data.data(), 0);
        if (matvar == NULL) {
            Mat_Close(matfp);
            throw std::runtime_error("无法创建MAT变量");
        }

        Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_NONE);
        Mat_VarFree(matvar);
        Mat_Close(matfp);

        std::cout << "矩阵已成功保存到 " << filename << std::endl;
}

int main() {
    // 示例:创建一个 5x5 的矩阵
    cv::Mat mat = (cv::Mat_<double>(5, 5) << 1, 2, 3, 4, 5,
                                              6, 7, 8, 9, 10,
                                              11, 12, 13, 14, 15,
                                              16, 17, 18, 19, 20,
                                              21, 22, 23, 24, 25);

    // 保存到MAT文件
    saveMatrixToMat(mat, "matrix.mat");

    return 0;
}

 最后保存下来的mat

这里需要 完整的库的可以下方留言。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2191083.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unity基础-矩阵-坐标转换结果的个人理解+数学公式说明

想做一些渲染效果做到头大&#xff0c;根本很多空白&#xff0c;完全无法实现&#xff0c;只能先暂停一下&#xff0c;重新学习矩阵 目录 Unity基础-数学矩阵 1.我们利用最简单的“转换矩阵”&#xff0c; 2.然后&#xff0c;视图坐标又是如何 3.最后就是剪裁坐标 3.1 - 其…

硬件设计-利用环路设计优化PLL的输出性能

目录 前言 问题描述 问题分析步骤 杂散源头排查 245.76M 参考相噪&#xff1a; 30.72M VCXO的相噪性能测试如下: 解决方案 前言 LMK04832是TI 新发布的低抖动双环去抖模拟时钟&#xff0c; 其最高输出频率可以到达3250MHz&#xff0c; 输出抖动极低&#xff0c;3200MHz…

MySQL 中的数据库锁和表锁

在 MySQL 数据库中&#xff0c;为了保证数据的一致性和完整性&#xff0c;会使用各种类型的锁。其中&#xff0c;数据库锁和表锁是比较常见的两种锁类型。 一、数据库锁和表锁的概念 &#xff08;一&#xff09;数据库锁 数据库锁是对整个数据库进行锁定&#xff0c;限制对数…

尝试从 http://pypi.doubanio.com/simple 这个索引源安装 webdriver 时出现了问题

问题如下&#xff1a; WARNING: The repository located at pypi.doubanio.com is not a trusted or secure host and is being ignored. If this repository is available via HTTPS we recommend you use HTTPS instead, otherwise you may silence this warning and allow …

ElasticSearch备考 -- 异步检索

一、题目 通过异步方式查询earthquakes索引下Magnitude大于5的数据 二、思考 正常的查询大家可能会用的多一点&#xff0c;这种异步查询为了可以数据量量比较大的查询在后台执行&#xff0c;不用同步等待结果&#xff0c;待执行完成在获取结果。 三、解题 Step 1、准备基础数…

【深度强化学习基础】(一)基本概念

【深度强化学习基础】&#xff08;一&#xff09;基本概念 一、概率论基础知识二、强化学习领域术语三、强化学习中两个随机性的来源&#xff1a;四、rewards以及returns五、Value Functions1.Action-Value Function Q π ( s , a ) Q_\pi(s,a) Qπ​(s,a)1.State-Value Funct…

Yolov8改进WIoU,SIoU,EIoU,α-IoU

1,IOU原理部分 IoU(Intersection over Union)是一种在计算机视觉领域常用的性能评估指标,尤其在目标检测和图像分割任务中。它通过计算预测边界框(预测框)与真实边界框(真实框)之间的交集面积与并集面积之比来衡量预测的准确性。IoU的值越接近1,表示预测框与真实框的重…

Error while loading conda entry point: conda-libmamba-solver

问题 解决方法 conda install --solverclassic conda-forge::conda-libmamba-solver conda-forge::libmamba conda-forge::libmambapy conda-forge::libarchive

C0015.Clion中开发C++时,连接Mysql数据库方法

安装mysql数据库 CMakeLists.txt中配置mysql数据库 # 先指定mysql数据库的安装位置 include_directories("C:/Program Files/MySQL/MySQL Server 8.0/include") link_directories("C:/Program Files/MySQL/MySQL Server 8.0/lib") link_libraries(libmysq…

Python | 使用Seaborn绘制KDE核密度估计曲线

核密度估计&#xff08;KDE&#xff09;图&#xff0c;一种可视化技术&#xff0c;提供连续变量概率密度的详细视图。在本文中&#xff0c;我们将使用Iris Dataset和KDE Plot来可视化数据集。 什么是KDE图&#xff1f; KDE图&#xff0c;全称核密度估计图(Kernel Density Est…

智慧农业案例 (二)- 智能化灌溉系统

橙蜂智能公司致力于提供先进的人工智能和物联网解决方案&#xff0c;帮助企业优化运营并实现技术潜能。公司主要服务包括AI数字人、AI翻译、领域知识库、大模型服务等。其核心价值观为创新、客户至上、质量、合作和可持续发展。 橙蜂智农的智慧农业产品涵盖了多方面的功能&…

回归预测|基于哈里斯鹰优化最小二乘支持向量机的数据回归预测Matlab程序HHO-LSSVM 多特征输入单输出含基础程序

回归预测|基于哈里斯鹰优化最小二乘支持向量机的数据回归预测Matlab程序HHO-LSSVM 多特征输入单输出含基础程序 文章目录 一、基本原理一、基本原理二、HHO-LSSVM的流程三、优缺点四、应用场景 二、实验结果三、核心代码四、代码获取五、总结 一、基本原理 HHO-LSSVM回归预测结…

校园资源共享新方案:基于SpringBoot的实现

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多学生、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常适…

Vue之父尤雨溪成立VoidZero公告,已获得 460 万美元种子轮融资

VoidZero Inc. 创立公告 摘要&#xff1a; 我创立了 VoidZero Inc.&#xff0c;这是一家致力于构建开源、高性能、统一的开发工具链&#xff0c;服务于 JavaScript 生态系统的公司。我们已获得 Accel 领投的 460 万美元种子轮融资。 十五年前&#xff0c;当我开始使用 JavaSc…

哈尔滨自闭症学校寄宿条件与优势解析

自闭症儿童的希望之光&#xff1a;广州星贝育园寄宿制学校深度解析 在当今社会&#xff0c;自闭症儿童作为一群需要特别关注和照顾的群体&#xff0c;其教育与康复问题日益受到社会各界的重视。自闭症儿童不仅需要专业的康复训练&#xff0c;还需要一个稳定、温馨且充满爱的环…

UE5 小地图的基础方法

图片小地图&#xff0c;场景空间映射UI坐标 场景截图&#xff0c;创建UI&#xff0c;添加截图&#xff0c;映射坐标&#xff0c;以第三人称模版为例

银行数字化转型导师坚鹏:2025年银行开门红蓄客方法及案例

2025年银行开门红蓄客方法及案例 课程背景&#xff1a; 面对即将打响的开门红战役&#xff0c;很多银行存在以下问题&#xff1a; 不知道银行开门红蓄客方法&#xff1f; 不知道银行开门红蓄客难题&#xff1f; 不知道银行开门红蓄客案例&#xff1f; 课程特色&#x…

《黑神话:悟空》2D像素版 支持PC+安卓版附下载链接

黑神话&#xff1a;悟空被B站火圣哥哥做成了一款2D像素风格的游戏&#xff01;是不是光听到这个想法就觉得很酷&#xff1f;接下来&#xff0c;我带你们一起走进他的创作世界&#xff0c;看看他是如何一步步实现这个脑洞大开的创意的。相信你们一定会被他的巧思与坚持所打动。 …

职场中的10个“人情世故”,随处可见

职场上&#xff0c;“现实”是主基调。如果不通#人情世故#&#xff0c;可能举步维坚。很多时候&#xff0c;人情世故并不是什么高深的学问&#xff0c;就是在点点滴滴间&#xff0c;只要稍加注意&#xff0c;就能学通。下面这10条&#xff0c;是职场很常见的人情世故。 1、登门…

计算机的错误计算(一百一十三)

摘要 用错数分析计算机的错误计算&#xff08;一百一十二&#xff09;中错误计算的原因。 计算机的错误计算&#xff08;一百一十二&#xff09;中的迭代为 对于 , Excel 与 LibreOffice 的输出均是错误结果&#xff0c;均没有1位正确有效数字。另外&#xff0c;其文献[1]中也…