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

CSMatIO库的安装与C#实现.mat文件生成

一.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.lqws.cn/news/522181.html

相关文章:

  • 数据库系统总结
  • cocos2 实现全局音量管理
  • 51c嵌入式~CAN~合集2
  • 数据文件写入技术详解:从CSV到Excel的ETL流程优化
  • 使用AkShare获取股票报表
  • [省选联考 2025] 推箱子
  • Java 的强制类型转换
  • Sortablejs动态同类型穿插
  • npm 报错:“无法加载文件 ...npm.ps1,因为在此系统上禁止运行脚本” 解决方案(附执行策略说明)
  • 创新让生活更美好丨“鑫亘科技亮相2025上海CMEF,创新医疗材料引领未来!”
  • 【Docker基础】Docker容器管理:docker pause、stop、kill区别
  • Gemini 2.5 Pro vs Claude 4:2025年高考物理真题实战对比评测(国内直接使用)
  • 【Java高频面试问题】JVM篇
  • python接口测试参数multipart/form-data格式不能有多余的空格或 tab 缩进
  • 逆向入门(8)汇编篇-rol指令的学习
  • Windows下Zookeeper客户端启动缓慢问题分析与解决方案
  • oracle物化视图
  • Jenkins JNLP与SSH节点连接方式对比及连接断开问题解决方案
  • 强化学习概述
  • 【Python】图像+点云 结合显示
  • Linux 内存管理之page cache
  • 【PyTorch】保存和加载模型
  • 【cursor实战】分析python下并行、串行计算性能
  • <六> k8s + promtail + loki + grafana初探
  • 深度学习入门--(二)感知机
  • 利用代理IP爬取Shopee网页数据
  • C/C++中调用Java实现
  • keil5 cannot copy license file to “Download“ folder
  • 阿里云Web应用防火墙3.0使用CNAME接入传统负载均衡CLB
  • 量学云讲堂王岩江宇龙2025年第58期视频 主课正课系统课+收评