#matlab #文件读取器 #mat #数据文件 #文件 #读写器 #写者

matfile

Matfile 是一个用于读写 Matlab ".mat" 数据文件的库

7 个不稳定版本

0.4.1 2024年1月20日
0.4.0 2023年4月22日
0.3.1 2021年6月26日
0.2.1 2020年5月17日
0.1.0 2019年4月4日

#287解析器实现

Download history 32/week @ 2024-04-15 123/week @ 2024-04-22 32/week @ 2024-05-06 121/week @ 2024-05-20 151/week @ 2024-05-27 156/week @ 2024-06-03 85/week @ 2024-06-10 75/week @ 2024-06-17 38/week @ 2024-06-24 57/week @ 2024-07-01 101/week @ 2024-07-08 25/week @ 2024-07-15 26/week @ 2024-07-22 65/week @ 2024-07-29

217 每月下载量
4 crates 中使用

MIT 许可证

63KB
1.5K SLoC

Matfile

LICENSE Build Status Docs Crates.io Version Dependency Status

Matfile 是一个用于读取(未来也将支持写入) Matlab ".mat" 文件的库。

请注意:此库仍然是 alpha 级别的软件,并且仅实现了 .mat 文件支持的特性和功能的一部分。

功能状态

Matfile 目前允许您从 .mat 文件中加载数值数组(所有浮点型和整型类型,包括复数)。其他类型目前被忽略。

  • 加载 .mat 文件
    • 数值数组
    • 单元数组
    • 结构数组
    • 对象数组
    • 字符数组
    • 稀疏数组
  • 写入 .mat 文件

示例

从磁盘加载 .mat 文件并按名称访问其数组之一

let file = std::fs::File::open("data.mat")?;
let mat_file = matfile::MatFile::parse(file)?;
let pos = mat_file.find_by_name("pos");
println!("{:#?}", pos);

可能输出如下

Some(
    Array {
        name: "pos",
        size: [
            2,
            3
        ],
        data: Double {
            real: [
                -5.0,
                8.0,
                6.0,
                9.0,
                7.0,
                10.0
            ],
            imag: None
        }
    }
)

请注意,数据以列主序格式存储。对于更高维度的数据,这意味着第一个维度具有最快变化的索引。

ndarray 支持

通过 ndarray 功能启用在 matfile::Arrayndarray::Array 之间转换的辅助函数

[dependencies]
matfile = { version = "0.3", features = ["ndarray"] }

虽然 matfile 数组抽象了底层数据类型,但 ndarray 数组由具体数据类型参数化。因此,如果数据类型不兼容,提供的转换可能是不可行的。

示例

首先,将 TryInto 特性引入作用域

use std::convert::TryInto;

动态维度的数组

matfile 数组 mf_arr 转换为动态维度 ndarray 数组 nd_arr

let nd_arr: ndarray::ArrayD<f64> = mf_arr.try_into()?;

静态维度的数组

matfile 数组 mf_arr 转换为静态维度 ndarray 数组 nd_arr

let nd_arr: ndarray::Array2<num_complex::Complex<f32>> = mf_arr.try_into()?;

依赖关系

~3–4.5MB
~74K SLoC