跳过正文

Rust读取.mat文件并存入多维数组变量

·399 字·1 分钟·
Hiroi
作者
Hiroi
我大抵是变成一只🐀🐀了罢
Rust深度学习 - 这篇文章属于一个选集。
§ 1: 本文
matio-rs看起来已经很久没更新了,并且在安装了hdf5库的情况下无法完成编译

安装依赖
#

首先,安装依赖

cargo add ndarray matio-rs

也可以直接在toml文件中添加

.mat源文件
#

使用python的scipy读取,结果为

{'__header__': b'MATLAB 5.0 MAT-file Platform: nt, Created on: Mon May 20 17:00:23 2024', '__version__': '1.0', '__globals__': [], 
'name': array([[1145]], dtype=int32), 
'age': array([[14]], dtype=int32), 
'data': array([[-23, -24, -27, ...,  13,  14,  14],
       [-16, -16, -17, ...,  12,  11,  13],
       [  8,   9,  11, ...,   0,  -2,  -1],
       ...,
       [ -9,  -8,  -7, ...,  20,  17,  19],
       [ -8,  -7,  -6, ...,  29,  27,  28],
       [  2,   3,   3, ...,  18,  15,  15]], dtype=int32), 
'label': array([[7]], dtype=int32)}

使用matio-rs读取.mat文件
#

use ndarray::prelude::*;
use matio_rs::{MatFile, Mat, MatioError, MatFileRead};
fn main() -> Result<(),MatioError> {
    let mat_path = "xxx.mat";
    let mat_file: MatFileRead = matio_rs::MatFile::load(mat_path)?;

    // Returns the list of variables within a MatFile
    mat_file.info();
    // Read the var
    let mat_age: Vec<i32> = mat_file.var("data")?;
    // To ndarray
    let array1 = ndarray::Array::from_shape_vec((12,5000), mat_age);
    println!("\n{:?}",array1);

    Ok(())
}

Output:

Matlab var.: "name" with dims: [1, 1]
Matlab var.: "age" with dims: [1, 1]
Matlab var.: "data" with dims: [12, 5000]
Matlab var.: "label" with dims: [1, 1]

Ok([[-23, -16, 8, 21, -15, ..., 4, -13, 10, 14, -19],
 [-19, 8, 3, -4, -9, ..., -4, -5, -4, 2, 5],
 [-3, -1, 10, -1, -34, ..., 24, 2, -11, -15, 14],
 [-6, -9, -3, 8, -1, ..., -15, 8, 8, -21, 39],
 [35, 14, 13, -19, 16, ..., 1, -6, -5, 1, 6],
 ...,
 [-9, -9, -16, -31, -11, ..., 18, 21, 7, -14, -14],
 [18, -3, -10, -19, -2, ..., -11, -17, -13, -12, -4],
 [-9, -9, 1, 10, -4, ..., -7, 14, -6, -14, -8],
 [-34, -5, -4, -9, 13, ..., -5, -13, -19, -5, 17],
 [-3, -12, 21, -20, 35, ..., 27, -12, 19, 28, 15]], shape=[12, 5000], strides=[5000, 1], layout=Cc (0x5), const ndim=2)

参考
#

Rust深度学习 - 这篇文章属于一个选集。
§ 1: 本文