将犰狳中的矩阵从稀疏转换为密集(spmat 到 mat)

Posted

技术标签:

【中文标题】将犰狳中的矩阵从稀疏转换为密集(spmat 到 mat)【英文标题】:Convert Matricies in Armadillo from Sparse to Dense (spmat to mat) 【发布时间】:2014-11-11 00:07:54 【问题描述】:

我正在使用 Armadillo C++ 线性代数库,并试图弄清楚如何将 sp_mat 稀疏矩阵对象转换为标准 mat 密集矩阵。

查看internal code doc、sp_matmat 不共享一个共同的父类,这让我相信没有办法将sp_mat 转换为mat。顺便说一句,conv_to<mat>::from(sp_mat x) 不起作用。

也许有一种棘手的方法可以使用高级mat 构造函数之一来做到这一点?例如,以某种方式创建一个零垫,并在sp_mat 中传递非零元素的位置和值。

有没有人知道一种有效的方法来做到这一点?提前致谢。

【问题讨论】:

【参考方案1】:

铸造效果非常好:

sp_mat X(2,2);

mat Y(X);

Y.print("Y:");

【讨论】:

哇。我不敢相信我错过了。非常感谢!也许我遗漏了一些东西,但我没有看到 sp_mat 作为 api 文档中 mat 构造函数的输入。 arma.sourceforge.net/docs.html#Mat

以上是关于将犰狳中的矩阵从稀疏转换为密集(spmat 到 mat)的主要内容,如果未能解决你的问题,请参考以下文章

犰狳 SpMat<int> 与 Mat<int> 相比非常慢

犰狳错误:没有匹配函数调用‘inv(arma::SpMat<double>&)’

使用R中的稀疏矩阵从矢量中提取元素,而不转换为密集矩阵

稀疏 x 密集矩阵乘以 Armadillo 出乎意料地慢

将稀疏 scipy 矩阵加载到现有的 numpy 密集矩阵中

如何将块压缩行转换为密集矩阵?