3 个不稳定版本
使用 Rust 2015
0.2.0 | 2018 年 5 月 11 日 |
---|---|
0.1.1 | 2018 年 4 月 8 日 |
0.1.0 | 2018 年 2 月 19 日 |
#872 在 科学
67 每月下载量
在 4 个 Crates 中使用(通过 madgwick)
14KB
325 行
mat
静态大小的矩阵,适用于
no_std
应用
许可证
许可协议为以下之一
- Apache 许可协议第 2 版 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可协议 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
根据您的选择。
贡献
除非您明确声明,否则您有意提交以包含在作品中的任何贡献,如 Apache-2.0 许可协议中定义,应按上述方式双许可,而无需任何额外条款或条件。
lib.rs
:
静态大小的矩阵,适用于 no_std
应用
此库提供了创建和执行静态大小矩阵的数学运算的支持。即矩阵的维度在编译时已知。此库的主要用例是 no_std
程序,其中不可用内存分配器。
由于矩阵是静态分配的,因此矩阵的维度存储在类型系统中,并在编译时用于防止无效操作(例如,将 3x4 矩阵添加到 4x3 矩阵)。
出于性能原因,所有操作(除 get
方法外的索引操作)都是懒加载的,并不执行实际计算。例如,表达式 a * b + c;
仅构建一个 表达式树。可以使用 get
来强制评估这样的树;请参阅以下内容
#[macro_use]
extern crate mat;
use mat::traits::Matrix;
fn main() {
// 2 by 3 matrix
let a = mat!(i32, [
[1, 2, 3],
[3, 4, 5],
]);
// 3 by 2 matrix
let b = mat!(i32, [
[1, 2],
[3, 4],
[5, 6],
]);
// build an expression tree
let c = &a * &b;
// partially evaluate the tree
assert_eq!(c.get(0, 0), 22);
}
此程序不会分配和计算大小为 2x2 的新矩阵 C;它仅执行获取矩阵 C 在行 0 和列 0 的元素所需的操作。
范围之外
以下功能超出了此库的范围。
- 需要动态内存分配的操作
- SIMD 加速
- n 维数组
如果您正在寻找此类功能,请查看 ndarray
crate。
开发状态
此库不太可能看到太多开发,直到编译器支持 const generics。
依赖关系
~260KB