1 个不稳定版本

0.1.0 2024年1月16日

1358Rust 模式

MIT 许可协议

27KB
712

mat_rs

在 Rust 中实现数学矩阵类型的 no_std

⚠️ 进行中

此库已可用,但尚未完成。待办事项列表中有几项

  • 实现 DMat 的 toInverse(如果可能)和 inverse 方法
  • 为类型和操作添加文档注释
  • 添加 DMat 和 Mat 之间的一向互操作性(可能通过一个共同的 Matrix 特性实现)

特性

此库包实现了两种类型的矩阵

  • Mat<R, C>,使用 const generics 实现的静态大小矩阵类型
  • DMat,动态大小的矩阵类型

这两种矩阵变体都内部存储 f64 值。

使用方法

可以使用提供的 mat![]dmat![] 宏或某些类型提供的函数来初始化矩阵

use mat_rs::mat::{mat, Mat};

let a = mat![
    1, 2, 3;
    4, 5, 6;
    7, 8, 9;
]; //the type will be automatically inferred as Mat<3, 3>

let b = Mat::identity(3); //3x3 identity matrix

assert_eq(a*b, a);
println!("{}", a.determinant()); //0

操作

对于静态大小的 Mat,操作仅定义在有效的对应类型上。例如,Mat<R, C>::add 仅在相同类型的矩阵上定义。

这也适用于乘法中的交换矩阵,以及仅适用于方阵的操作,如行列式和逆。

动态矩阵在当前情况下将引发恐慌,因此,在执行操作之前,实现者需要验证大小(如果必要的话)。

无运行时依赖项