gpt4 book ai didi

c++ - Armadillo 中是否有类似稀疏立方体的东西,或者使用稀疏矩阵作为立方体切片的某种方式?

转载 作者:行者123 更新时间:2023-11-28 04:13:41 25 4
gpt4 key购买 nike

我正在使用 Armadillo 稀疏矩阵。但是现在我想使用 Armadillo 中不存在的“稀疏立方体”之类的东西。使用 cube.slice(some_sparse_matrix) 将稀疏矩阵写入立方体会将所有内容转换回密集立方体。

我正在使用稀疏矩阵来与 vector 相乘。对于较大的 vector/矩阵,稀疏变体要快得多。现在我必须总结几个稀疏矩阵与几个 vector 的乘法。std:vector 会是一种方式吗?

根据我的经验,与自己编写循环相比,使用 Armadillo 函数(例如子 vector 或 arma::span() 或 arma::sum() )更快。所以我想知道最快的方法是什么。

最佳答案

可以像这样使用 field class 来近似稀疏立方体。

arma::uword number_of_matrices = 10;
arma::uword number_of_rows = 5000;
arma::uword number_of_cols = 5000;

arma::field<arma::sp_mat> F(number_of_matrices);

F.for_each( [&](arma::sp_mat& X) { X.set_size(number_of_rows, number_of_cols); } );

F(0)(1,2) = 456.7; // write to element (1,2) in matrix 0
F(1)(2,3) = 567.8; // write to element (2,3) in matrix 1

F.print("F:"); // show all matrices

您的编译器必须至少支持 C++11 才能工作。

关于c++ - Armadillo 中是否有类似稀疏立方体的东西,或者使用稀疏矩阵作为立方体切片的某种方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57117600/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com