一.CSMatIO介绍

CSMatIO 是一个用于读写 MATLAB .mat 文件的开源 C# 库,它提供了简单而高效的 API,使 .NET 应用程序能够与 MATLAB 进行数据交换,支持读取和写入 MATLAB 的 .mat 文件(版本 5 和 7.3),兼容 MATLAB 数据类型:矩阵、结构体、单元数组、字符数组等,不依赖 MATLAB Runtime,适合独立应用程序。

二.CSMatIO安装

1.通过NuGet包管理器引用(主流方式)

  右键点击项目 → 选择“管理 NuGet 程序包”→ 进入NuGet界面,搜索并安装包,

  在“浏览”选项卡输入包名(如 Newtonsof.json ) → 选择版本 一 点击“安装”自动下载依赖项。

验证安装

安装成功后,包会自动添加到项目引用中,代码可通过 using 语句引入命名空间。

2.引用外部DLL文件常用

  右键项目“引用“或“依赖项”→ 选择“添加引用”→ 切换到“浏览”选项卡 → 选择DLL文件 → 点击“确定”.

说明:一般把dll放置到本项目新建的lib目录下。  

版本兼容性检查:需确保DLL的.NET版本与当前项目兼容.

3.添加项目引用(同一解决方案内)

  确保项目在同一解决方案

在解决方案资源管理器中确认需引用的类库项目存在.

  添加引用

右键目标项目的“依赖项”或“引用”→ 选择“添加项目引用” 一 勾选目标项目 一 点击“确定”。

  代码引用

在代码中通过 using 语句引入目标项目的命名空间即可调用其类型。

4.命令行安装

  在 Visual Studio 中依次点击 工具 > NuGet 包管理器 > 程序包管理器控制台,输入以下命令并回车:

  运行命令:Install-Package CSMatIO -Version 1.0.20

  https://www.nuget.org/packages/csmatio#supportedframeworks-body-tab

三.代码测试

1.生成.mat文件

using csmatio.io;

using csmatio.types;

class MatFileCreator

{

    static void Main()

    {

        //创建二维矩阵

        double[][] data1 = new double[1][];

        data1[0] = new double[] { 100.0, 101.0, 102.0 }; // first row

        MLDouble mlDoubleArray = new MLDouble("Matrix_1", data1); //创建二维矩阵变量

        List<MLArray> mlList = new List<MLArray>();

        mlList.Add(mlDoubleArray);

        MatFileWriter mfw = new MatFileWriter("data1.mat", mlList, false);

    }

}

2. 读取二维数据

            // create a reader for the file

            MatFileReader mfr = new MatFileReader("test22.mat");

            // get a reference to our matlab 'squares' double matrix

            MLSingle mlSquares = (mfr.Content["w1"] as MLSingle);

            Single[] squares;

            if (mlSquares != null)

            {

                // now get the double values

                Single[][] tmp = mlSquares.GetArray();

                squares = tmp[0];

            }

3.官方参考demo网址

https://sourceforge.net/p/csmatio/wiki/Usage%20Examples/

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计一个interface (一)

好的&#xff0c;我来举一个具体的例子&#xff0c;帮助你理解 interface、element、resource 和 architecture 之间的关系。 场景&#xff1a;设计一个用户管理系统的接口 背景 假设我们正在设计一个用户管理系统&#xff0c;系统中有两个主要的模块&#xff1a; 用户服务模…

tomcat下载安装

目录 一.tomact简介 二.详细步骤 三.下载页面详解&#xff08;选看&#xff09; 一.tomact简介 Tomcat是Apache软件基金会下的一个核心项目&#xff0c;它是一个开源的Java Servlet和JSP容器。由Apache、Sun等公司及个人共同开发&#xff0c;由于Sun的参与&#xff0c;最新的…

Axure版AntDesign 元件库-免费版

AntDesign 元件库概述 一、AntDesign 元件库概述 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; AntDesign 是蚂蚁集团推出的企业级设计体系&#xff0c;在 Axure 中使用 AntDesign 元件库&#xff0c;可帮助设计师快速搭建符合现代企业级产品标准的高…

MySQL锁机制全解析

MYSQL存储引擎支持的锁 InnoDB支持行级锁(row-level locking)和表级锁,默认为行级锁。MyISAM采用表级锁(table-level locking) 锁的基本分类 1. 按照锁的使用方式 , Mysql的锁大致分为共享锁和排它锁 a. 共享锁(S) 共享锁&#xff0c;Share lock&#xff0c;又称为读锁&am…

图解Git中Rebase与Merge的区别

文章目录 前言理解基本概念&#x1f500; Git Merge&#xff1a;合并分支&#x1f504; Git Rebase&#xff1a;重写历史 可视化理解工作流程实际应用场景与示例场景1&#xff1a;团队协作 - 使用Merge场景2&#xff1a;个人分支整理 - 使用Rebase冲突解决&#xff1a;两种策略…

2 Qt中的空窗口外观设置和常用的基础部件

Widget空窗口 this->setWindowTitle("我的窗口");//设置窗口标题this->resize(500,300);//设置窗口大小this->setFixedSize(500,300);//设置固定大小&#xff08;无法拖拽&#xff09; 此时&#xff0c;窗口大小发生改变&#xff0c;且窗口名称改变&#x…

常用 Python 编辑器

可以使用任何文本编辑器来编写 Python 程序&#xff0c;只要遵循 Python 语法且保存为文件&#xff0c;程序都可以通过 python 命令运行。不过&#xff0c;使用功能丰富的专用编辑器会带来更好的编程体验。 当今最常用的几个 Python 编辑器&#xff08;也称 IDE 或代码编辑器&a…

Java+Vue开发的电子采购管理系统,助力企业采购智能化,提升效率促发展

前言&#xff1a; 在当今数字化时代&#xff0c;企业采购管理面临着提高效率、降低成本、增强透明度等诸多挑战。传统的采购模式往往存在流程繁琐、信息传递不及时、管理难度大等问题。电子采购管理系统应运而生&#xff0c;它借助先进的互联网技术和信息化手段&#xff0c;将…

嵌入式网络通信与物联网协议全解析:Wi-Fi、BLE、LoRa、ZigBee 实战指南

来源&#xff1a;0voice/EmbeddedSoftwareLearn 一、为什么嵌入式一定要搞懂网络通信&#xff1f; 在传统的裸机或单机嵌入式项目里&#xff0c;我们习惯了“点灯、串口、IC/SPI、RTOS 多任务”这样的套路。但当一个设备需要与云平台、手机 App 或其他设备实时交互时&#xff…

【补充笔记●推荐方案】解决 Docker “open \.\pipe\docker_engine: Access is denied” 权限问题

starting services: initializing Docker API Proxy: setting up docker api proxy listener: open \\.\pipe\docker_engine: Access is denied.引言 【笔记】解决 WSL 迁移后 Docker 出现 “starting services: initializing Docker API Proxy: setting up docker ap” 问题-…

AI编程工具深度对比:腾讯云代码助手CodeBuddy、Cursor与通义灵码

腾讯云代码助手 CodeBuddy 智能代码补全&#xff1a;基于上下文和编辑行为预测代码&#xff0c;支持行内补全、函数块生成及注释转代码&#xff0c;覆盖200编程语言和框架&#xff0c;可减少70%以上的键盘输入。Craft智能体&#xff1a;支持自然语言驱动的多文件协同开发&…

Redis 的集群

深入理解 Redis 的集群模式与高可用机制 Redis 是一款广泛应用于高性能缓存与存储系统的 NoSQL 数据库。随着业务的发展&#xff0c;如何提升 Redis 的高可用性和水平扩展能力成为架构设计的关键。本篇博客将系统讲解 Redis 的不同集群模式及其高可用策略&#xff0c;深入剖析其…

基于Dify平台构建AI应用

2022年底openAI的chatgpt的出现&#xff0c;让人们看到生成式AI的能力如此强大&#xff0c;引燃了生成式AI的一波浪潮。2025年春节前&#xff0c;DeepSeek的横空出世让大模型这个领域变得人人都可以参与进来&#xff0c;生成式AI大模型不再有非常高的显卡的门槛&#xff0c;普通…

Python tikinter实现打开指定ip的电脑摄像头

以下是一个使用Python的tkinter和OpenCV库实现打开指定IP摄像头的应用程序。这个程序允许用户输入IP摄像头的URL&#xff0c;并实时显示摄像头画面&#xff0c;同时支持截图和录制功能。 登录后复制 import tkinter as tk from tkinter import ttk, messagebox, filedialog imp…

OpenCV插值方法详解:原理、应用与代码实践

一、引言 在数字图像处理中&#xff0c;插值是一种基本且重要的技术&#xff0c;它广泛应用于图像缩放、旋转、几何变换等场景。OpenCV作为最流行的计算机视觉库之一&#xff0c;提供了多种插值方法供开发者选择。本文将全面介绍OpenCV中的插值技术&#xff0c;包括各种方法的…

创客匠人解析:身心灵赛道创始人 IP 打造核心策略

在当代社会焦虑情绪蔓延的背景下&#xff0c;身心灵赛道正以万亿级市场规模成为知识变现的新蓝海。作为知识变现领域的重要参与者&#xff0c;创客匠人通过服务超 5W 知识博主的实践经验&#xff0c;揭示了该赛道中创始人 IP 打造的底层逻辑 ——IP 不仅是形象符号&#xff0c…

Rust 和C++工业机器人实践

Rust 调用Cursor案例 Cursor 的这些功能可以显著提升开发效率,减少重复劳动,适合个人开发者和团队协作使用。 读取文件内容并处理 使用Cursor读取文件内容并逐行处理: use std::io::{Cursor, BufRead};let data = "Line 1\nLine 2\nLine 3".as_bytes(); let c…

llama.cpp学习笔记:后端加载

单例 struct ggml_backend_registry {std::vector<ggml_backend_reg_entry> backends;std::vector<ggml_backend_dev_t> devices;// ... }struct ggml_backend_reg_entry {ggml_backend_reg_t reg;dl_handle_ptr handle; };typedef struct ggml_backend_reg * ggm…

Prompt工程标准化在多模型协同中的作用

&#x1f680; 在AI模型"群雄逐鹿"的时代&#xff0c;如何让这些"AI武林高手"协同作战&#xff1f;答案可能藏在一个看似平凡却至关重要的概念中&#xff1a;Prompt工程标准化。 &#x1f4da; 文章目录 引言&#xff1a;AI模型的"巴别塔"困境什…

Java面试宝典:基础五

104. 源文件命名规则 题目:主类名为 a1,保存它的源文件可以是? 选项: A. a1.java B. a1.class C. a1 D. 都对 答案:A 解析: Java 源文件必须与公共类名完全匹配(区分大小写),后缀为 .java。.class 是编译后的字节码文件,非源文件。105. Java类的本质 题目:Java类…