#稀疏矩阵 #矩阵 #稀疏

sparsemat

一个简单的稀疏矩阵库

1 个不稳定版本

0.2.0 2021 年 12 月 5 日

#32#稀疏矩阵

MIT 许可协议

64KB
1.5K SLoC

sparsemat:用 Rust 编写的稀疏矩阵库

使用方法

本项目的目标是提供一个高效且易于使用的 Rust 稀疏矩阵库。不同的实现共享相同的接口 SparseMatrix,并且必须按行实现,例如提供行迭代器。如果需要列迭代器,如果可用,则可以使用 IterColumn 特性。使用通用的稀疏矩阵格式 CRS(压缩行存储)。然而,不应使用此格式来组装稀疏矩阵,因为插入条目可能成本高昂,在最坏情况下可能需要 O(N) 的时间。为此,提供了一个另一种实现:SparseMatIndexList。它使用索引列表跟踪所有条目,这些条目只是追加到一个数据向量中。此格式需要更多空间,可能比 CRS 慢,但条目插入时间复杂度为 O(1)。为了利用两种格式,应使用 SparseMatIndexList 来组装矩阵,之后可以将其转换为 SparseMatCRS

    use sparsemat::SparseMatIndexList;
    use sparsemat::SparseMatCRS;

    let mut sp = SparseMatIndexList::<f32, u32>::with_capacity(3);
    // Add entries and modify them
    sp.add_to(0, 1, 4.2);
    sp.set(1, 2, 4.12);
    *sp.get_mut(0, 2) += 0.12;
    // Convert to CRS format
    let sp_crs = sp.to_crs();
    // Use matrix here

无运行时依赖