将犰狳中的矩阵从稀疏转换为密集(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_mat
和mat
不共享一个共同的父类,这让我相信没有办法将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>&)’