6个版本 (破坏性)

0.5.1 2022年7月1日
0.5.0 2022年6月30日
0.4.0 2022年6月29日
0.3.0 2022年6月28日
0.1.0 2022年6月27日

#758 in 数学

无版权

35KB
641

qmat

Version Docs codecov Build Status open issues License Code Size

qmat是一个简单的二维矩阵库。

用法

创建新矩阵

创建新矩阵主要有三种方法。

use qmat::prelude::*;

// Creates the matrix 2x3
//     [0, 1, 2]
//     [3, 4, 5]
// The generics are the data type, the number of rows, the
// number of cols then the lenth of the data (rows * cols) 
let mat: Matrix<i32, 2, 3, 6> = Matrix::new([0, 1, 2, 3, 4, 5]).unwrap();

// Or,
let mat = Matrix::<_, 2, 3, 6>::new([0, 1, 2, 3, 4, 5]).unwrap();
use qmat::prelude::*;

// Creates the same matrix using the analagous macro pattern.
// Automatically unwraps the errors.
let mat = matrix!(2, 3, [0, 1, 2, 3, 4, 5]);
use qmat::prelude::*;
let mat = matrix!([[0, 1, 2], [3, 4, 5]]);

还可以使用 Matrix::emptyMatrix::diag 创建矩阵。

获取值

使用 [usize; 2]

use qmat::prelude::*;
let mat = matrix!([[0, 1, 2], [3, 4, 5]]);
println!("{}", mat[[1, 1]]); // 4

使用位置结构体

use qmat::prelude::*;
let mat = matrix!([[0, 1, 2], [3, 4, 5]]);
let pos = Position(0, 2);
println!("{}", mat[pos]); // 2

矩阵运算

迭代器

待办事项

  • 实现可变行和列迭代器
  • 实现非(2, 2)形状矩阵的求逆
  • 允许对任何可以转换为 [usize; 2] 的东西进行索引
  • 优化
  • 在 README.md 中添加矩阵运算和迭代器的示例

依赖

~0.5–1.1MB
~25K SLoC