当前位置: 首页 > 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 二…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查

在对接支付宝API的时候&#xff0c;遇到了一些问题&#xff0c;记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…...

shell脚本--常见案例

1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件&#xff1a; 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...