1 个不稳定版本
0.2.0 | 2021 年 12 月 5 日 |
---|
#32 在 #稀疏矩阵
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