当前位置: 首页 > news >正文

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

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

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

相关文章:

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

Windows 上安装并使用 MATIO 库来保存 MATLAB 格式的 .mat 文件&#xff0c;需要进行以下步骤&#xff1a; 1. 下载并安装 CMake MATIO 使用 CMake 构建项目&#xff0c;因此你需要先安装 CMake。 前往 CMake 官网下载适用于 Windows 的安装程序并安装。 2. 下载 MATIO 库源…...

菱形继承(多继承)

1. 什么是菱形继承 也就是多继承&#xff0c;C独有的特性。 2. 菱形继承有什么问题&#xff1f; &#xff08;1&#xff09;存在内存浪费&#xff0c;多存一份父类的父类。 &#xff08;2&#xff09;容易造成二义性&#xff08;不知道修改哪一个基本属性&#xff09;。 3. 如…...

【功能安全】什么是Aspice?

背景 如何设计开发一个符合功能安全的模块&#xff0c;大多都是按照Aspice的规范去做。所以理解Aspice就很重要。 什么是Aspice 英文全称&#xff1a;Automotive Software Process Improvement Capability dEtermanition ASPICE4.0文档 汽车软件过程改进及能力评定&#xf…...

基于SpringBoot的国家基础信息管理功能的设计与实现

目录 前言 一、标准信息参考 1、信息来源 二、后台基础信息的维护管理 1、实体类和Mapper类 2、业务层和控制层设计 3、前端界面实现 三、管理页面效果 1、列表管理界面 2、国家信息调整 四、总结 前言 在之前的博客中&#xff0c;我们基于GeoTools工具实现了全球各个…...

Python酷库之旅-第三方库Pandas(145)

目录 一、用法精讲 656、pandas.Timestamp.resolution属性 656-1、语法 656-2、参数 656-3、功能 656-4、返回值 656-5、说明 656-6、用法 656-6-1、数据准备 656-6-2、代码示例 656-6-3、结果输出 657、pandas.Timestamp.second属性 657-1、语法 657-2、参数 6…...

最懂生活的年轻人,都在喝十元奶茶

文 | 螳螂观察 作者 | 如意 以前的打工人&#xff0c;总把二三十的高价奶茶当成身份的象征&#xff0c;喝上了高价奶茶才能叫做在生活中富养自己。 只是&#xff0c;到盘开支的时候&#xff0c;打工人才猛然发觉&#xff0c;动辄二三十一杯的奶茶&#xff0c;不知不觉刮走了…...

MinIO 学习订阅服务

MinIO 的入门非常简单 — 只需几个简单的命令和一个 100 MB 的小二进制文件&#xff0c;您就可以立即启动并运行一个功能性开发环境。但是&#xff0c;为了在生产规模上利用 MinIO 的全部功能&#xff0c;我们鼓励专业人士更多地了解 MinIO 的广泛功能。我们推出了 MinIO 学习订…...

【D3.js in Action 3 精译_029】3.5 给 D3 条形图加注图表标签(上)

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第一部分 D3.js 基础知识 第一章 D3.js 简介&#xff08;已完结&#xff09; 1.1 何为 D3.js&#xff1f;1.2 D3 生态系统——入门须知1.3 数据可视化最佳实践&#xff08;上&#xff09;1.3 数据可…...

用python做一个简单的画板

一&#xff0c;画板的介绍 画板&#xff08;Paint Board&#xff09;是一个提供用户绘图、涂鸦和创作的平台。现代数字画板通常是由软件程序实现的&#xff0c;具有多种功能。以下是画板的一些主要特征和功能&#xff1a; 1. 基本绘图工具 画笔和铅笔&#xff1a;用户可以选…...

根据传入的文件流链接实现前端下载

后端传入一个下载的url&#xff0c;实现点击按钮&#xff0c;下载文件。 方式一&#xff1a; 通过window.open(“URL”, _blank) 方式 PS&#xff1a;会打开一个新的页面 import React from react;const DownloadButton () > {// window.open("URL", "_…...

大数据新视界 --大数据大厂之大数据环境下的零信任安全架构:构建可靠防护体系

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...

基于springboot的高校招生系统(含源码+sql+视频导入教程+文档+PPT)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于springboot的高校招生系统1拥有两种角色&#xff1a;管理员和用户 管理员&#xff1a;学生管理、专业管理、报名管理、录取通知管理、招生公告管理等 用户&#xff1a;登录注册、报…...

【C++设计模式】行为型模式:观察者模式

文章目录 行为型模式&#xff1a;观察者模式 行为型模式&#xff1a;观察者模式 观察者模式定义了一种一对多的依赖关系&#xff1a;它让一个主题&#xff08;被观察者&#xff09;对象关联多个观察者对象&#xff0c;并且当主题对象的状态发生变化时&#xff0c;它会主动通知…...

本篇5K,立志最细,FreeRtos中的信号量Semaphore教程详解!!!

前言&#xff1a;本篇教程&#xff0c;参考韦东山&#xff0c;开发文档&#xff0c;连接放在最后 目录 Semaphore基本概念 二值信号量&#xff08;Binary Semaphore&#xff09; 计数信号量&#xff08;Couting Semaphore&#xff09; 互斥信号量&#xff08;Mutex&…...

【Postman】接口测试工具使用

干就完啦 Postman发送get请求案例1&#xff1a; Postman发送post请求案例2 Postman发送其他请求Postman测试实战 学习目标&#xff1a;能够使用Postman发送get/post/put/delete请求并获取响应结果 Postman发送get请求 首先postman是一款接口调试工具&#xff0c;支持win&…...

springboot 整合 rabbitMQ(1)

目录 一、MQ概述 二、MQ的优势和劣势 三、常见的MQ产品 RabbitMQ使用步骤 第一步&#xff1a;确保rabbitmq启动并且可以访问15672 第二步&#xff1a;导入依赖 第三步&#xff1a;配置 auto自动确认 manual手工确认&#xff08;推荐使用&#xff01;可以防止消息丢失&a…...

Appium Device Farm安装教程

环境要求&#xff1a;Appium version ≥ 2.4.X 安装appium npm install -g appium2.11.3 如果安装提示如下问题 npm error code EEXIST npm error syscall rename npm error path /Users/wan/.npm/_cacache/tmp/d5787519 npm error dest /Users/wan/.npm/_cacache/content-…...

异常、基类

异常 人生和世界总是充满着意外&#xff0c;争议、冲突和战争似乎是人类必然经历的过程。程序执行也有不满的时候。 不同编程语言的异常 Ada/Modula-3是早期引入异常处理的语言。 C语言没有标准意义的异常&#xff0c;使用goto或setjmp模拟错误或异常发生时的处理流程。 C/Java…...

VScode 自定义代码配色方案

vscode是一款高度自定义配置的编辑器, 我们来看看如何使用它自定义配色吧 首先自定义代码配色是什么呢? 看看我的代码界面 简而言之, 就是给你的代码的不同语义(类名, 函数名, 关键字, 变量)等设置不同的颜色, 使得代码的可读性变强. 其实很多主题已经给出了定制好的配色方案…...

MuMu模拟器12 KitsumeMask安装教程

这里是引用"> 在MuMu模拟器上安装KitsumeMask的时候遇到安装失败的情况。 一、下载APK安装包 如果你没有apk安装包可以通过下面的百度网盘进行下载 通过网盘分享的文件:KitsumeMask 链接: https://pan.baidu.com/s/1yeq3I6BsUD7J6uI-bnk-Vw?pwd=7n3v 提取码: 7n3v 二…...

告别龟速采样!用DDIM加速你的扩散模型推理(附PyTorch代码)

加速扩散模型推理&#xff1a;DDIM核心原理与实战优化指南 在图像生成领域&#xff0c;扩散模型以其卓越的质量表现迅速成为研究热点&#xff0c;但传统DDPM&#xff08;Denoising Diffusion Probabilistic Models&#xff09;的致命缺陷在于其缓慢的采样速度——生成一张图片往…...

技术视角:分布式投票系统的异步解耦架构与多语言协同实践

技术视角&#xff1a;分布式投票系统的异步解耦架构与多语言协同实践 【免费下载链接】example-voting-app Example Docker Compose app 项目地址: https://gitcode.com/gh_mirrors/exa/example-voting-app 在当今企业级应用架构设计中&#xff0c;如何平衡高并发处理、…...

告别迷茫!在嵌入式Linux上用libwebsockets v4.0实现WebSocket客户端(含SSL配置避坑)

嵌入式Linux实战&#xff1a;libwebsockets v4.0客户端开发与SSL避坑指南 当树莓派的GPIO引脚需要与云端实时同步数据时&#xff0c;WebSocket往往是嵌入式开发者的首选协议。但面对内存仅512MB的ARMv7开发板&#xff0c;选用一个既支持SSL加密又能兼容C99标准的轻量级库&#…...

AI应用开发利器:ai-devkit工具包核心功能与工程实践指南

1. 项目概述与核心价值最近在折腾AI应用开发&#xff0c;发现一个挺有意思的项目&#xff0c;叫codeaholicguy/ai-devkit。乍一看名字&#xff0c;你可能会觉得这又是一个“AI开发工具包”&#xff0c;市面上类似的工具已经多如牛毛了。但深入用下来&#xff0c;我发现它不太一…...

终极跨平台漫画阅读方案:nhentai-cross全平台使用指南

终极跨平台漫画阅读方案&#xff1a;nhentai-cross全平台使用指南 【免费下载链接】nhentai-cross A nhentai client 项目地址: https://gitcode.com/gh_mirrors/nh/nhentai-cross 你是否厌倦了在不同设备间切换漫画阅读应用&#xff1f;nhentai-cross正是为你量身定制…...

基于大语言模型的本地语义搜索工具LLocalSearch部署与应用指南

1. 项目概述&#xff1a;一个能“读懂”你电脑的本地搜索工具 如果你和我一样&#xff0c;电脑里塞满了各种文档、邮件、聊天记录和代码片段&#xff0c;那么“找东西”这件事&#xff0c;绝对能排进日常最耗时的任务前三。传统的文件搜索&#xff0c;比如Windows自带的搜索或者…...

终极qmcdump指南:5分钟掌握QQ音乐加密格式解密技巧

终极qmcdump指南&#xff1a;5分钟掌握QQ音乐加密格式解密技巧 【免费下载链接】qmcdump 一个简单的QQ音乐解码&#xff08;qmcflac/qmc0/qmc3 转 flac/mp3&#xff09;&#xff0c;仅为个人学习参考用。 项目地址: https://gitcode.com/gh_mirrors/qm/qmcdump qmcdump是…...

Python与ChatGPT构建智能办公自动化:从任务分解到智能体系统

1. 项目概述&#xff1a;用Python与ChatGPT联手&#xff0c;让办公自动化“开口说话”如果你每天还在重复着打开Excel、复制粘贴数据、手动写邮件、整理报告这些枯燥的活儿&#xff0c;那这个项目可能就是你的“数字员工”入职通知书。Sven-Bo/automate-office-tasks-using-cha…...

Kubernetes配置管理实战:基于Kustomize的结构化部署与多环境管理

1. 项目概述&#xff1a;一个被低估的Kubernetes配置管理利器如果你和我一样&#xff0c;长期在Kubernetes生态里摸爬滚打&#xff0c;那你一定经历过这样的场景&#xff1a;为了部署一个稍微复杂点的应用&#xff0c;需要维护一堆YAML文件——Deployment、Service、ConfigMap、…...

Kubernetes原生自动化部署工具Keel:实现容器镜像自动更新的最后一公里

1. 项目概述&#xff1a;什么是Keel&#xff0c;以及它解决了什么问题如果你和我一样&#xff0c;在团队里负责过一段时间的应用部署和更新&#xff0c;那你一定对“发布日”的紧张感深有体会。开发那边代码一提交&#xff0c;这边就得开始手动拉取镜像、更新Kubernetes的Deplo…...