1 个不稳定版本
0.1.0 | 2024年1月16日 |
---|
1358 在 Rust 模式
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
仅在相同类型的矩阵上定义。
这也适用于乘法中的交换矩阵,以及仅适用于方阵的操作,如行列式和逆。
动态矩阵在当前情况下将引发恐慌,因此,在执行操作之前,实现者需要验证大小(如果必要的话)。