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 在 解析器实现
217 每月下载量
在 4 crates 中使用
63KB
1.5K SLoC
Matfile
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::Array
和 ndarray::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