1
Q
稀疏矩阵和本征
A
回答
2
最简单的方法是迭代所有列并向稀疏矩阵添加稀疏矢量。你应该记住,如果你需要colwise操作,你的矩阵应该存储为Column-Major。
// allocate dense object
Eigen::MatrixXd M(2,4);
Eigen::VectorXd v(2);
// allocate sparse vector
Eigen::SparseVector<double> spV(2);
// allocate Column-major sparse matrix
Eigen::SparseMatrix<double, Eigen::ColMajor> spM(2, 4);
// initialize dense objects values
M << 1, 0, 0, 2,
4, 5, 0, 0;
v << 1,
3;
// convert dense objects to sparse representation
spM = M2.sparseView();
spV = v2.sparseView();
// iterate over sparse Matrix columns
for(int i = 0; i< spM.cols(); ++i) {
spM.col(i) += spV;
}
它不能在稠密矢量这样的方式来完成,其中的原因之一是,这个操作没有任何意义,因为生成矩阵将是密集。在这种情况下,你需要创建一些密集矩阵和你这样密集的向量执行colwise操作:
Eigen::MatrixXd(spM).colwise() + v
相关问题
- 1. 与本征稀疏矩阵乘法
- 2. 本征稀疏矩阵储备NNZ
- 3. 稀疏矩阵和矩阵
- 4. 本征稀疏矩阵乘法似乎计算全矩阵
- 5. 征:使用稀疏矩阵的selfAdjointView
- 6. 征:如何初始化一个稀疏矩阵与一些子稀疏矩阵
- 7. 稀疏矩阵
- 8. 组合矩阵和稀疏矩阵
- 9. 以稀疏矩阵
- 10. 50Kx50K稀疏矩阵
- 11. 稀疏三元组稀疏矩阵matlab
- 12. 如何叠加几个稀疏矩阵(特征矩阵)?
- 13. 如何用密集矩阵乘以稀疏矩阵与特征?
- 14. 确定稀疏矩阵的稀疏性(Lil矩阵)
- 15. 的std :: bad_alloc的在本征的转置::稀疏矩阵
- 16. 本征稀疏矩阵乘法错误与小数
- 17. 分配例外在本征::稀疏矩阵::储备
- 18. 灌装在本征稀疏矩阵是非常慢
- 19. 稀疏矩阵中的特征缩放和均值归一化
- 20. R矩阵包:Demean稀疏矩阵
- 21. python稀疏矩阵的矩阵功率
- 22. 稀疏矩阵 - 矩阵乘法
- 23. 稀疏矩阵子集密集矩阵
- 24. 98%稀疏矩阵的矩阵完成
- 25. 连续稀疏矩阵Eigen
- 26. 反相稀疏矩阵
- 27. 稀疏矩阵内存
- 28. 切片稀疏(scipy)矩阵
- 29. scipy稀疏矩阵分裂
- 30. 点产品稀疏矩阵
感谢,并很清楚,其实我在做什么现在的问题是一样的,你说,即迭代所有的列和做'spM.col(i)+ = spV',因为密集矩阵有一个方便的方法'.colwise()'没有迭代列,所以我只是发布这个问题来确认我们是否可以做到这一点稀疏矩阵的'.colwise'事物:-) – avocado
@avocado正如isakoff已经说过的那样,结果无论如何都是密集的,所以你应该把稀疏矩阵转换为一个密集矩阵并从那里继续。 'Eigen :: MatrixXd(spM).colwise()+ v'不给你一个稀疏矩阵,它给你一个密集的临时矩阵(至少它曾经被计算过)。 –
@AviGinsburg,所以'Eigen :: MatrixXd(spM).colwise()+ v'无论如何都会创建一个密集矩阵,对吧?如果是的话,那么我可能不会采取这种方式,因为我处理的稀疏矩阵非常庞大。 – avocado