#matrix #statically #sized #applications #dimension #no-std #performing

no-std mat

静态大小的矩阵,适用于 no_std 应用

3 个不稳定版本

使用 Rust 2015

0.2.0 2018 年 5 月 11 日
0.1.1 2018 年 4 月 8 日
0.1.0 2018 年 2 月 19 日

#872科学

Download history 25/week @ 2024-03-11 22/week @ 2024-03-18 28/week @ 2024-03-25 61/week @ 2024-04-01 14/week @ 2024-04-08 42/week @ 2024-04-15 37/week @ 2024-04-22 10/week @ 2024-04-29 20/week @ 2024-05-06 18/week @ 2024-05-13 16/week @ 2024-05-20 18/week @ 2024-05-27 16/week @ 2024-06-03 17/week @ 2024-06-10 10/week @ 2024-06-17 22/week @ 2024-06-24

67 每月下载量
4 个 Crates 中使用(通过 madgwick

MIT/Apache

14KB
325

mat

静态大小的矩阵,适用于 no_std 应用

许可证

许可协议为以下之一

根据您的选择。

贡献

除非您明确声明,否则您有意提交以包含在作品中的任何贡献,如 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