我试图将在Eigen C密集矩阵类( MatrixXd
,从 <Eigen/Dense>
)中实现的一些方法转换为具有Eigen C稀疏矩阵的方法(如来自 <Eigen/Sparse>
的 SparseMatrix<double>
) .
许多方法可以直接转换为 MatrixXd
至 SparseMatrix<double>
. 但是,有些方法不可能 .
我遇到的一个问题是将以下元素分红转换为稀疏矩阵方法:
(beta.array() / beta.cwiseAbs().array()).sum()
最初, beta
被声明为 MatrixXd beta
. 现在,如果我将 beta
声明为 SparseMatrix<double> beta
,则没有更多相应的 array()
方法允许我执行上述操作 .
我应该如何使用稀疏矩阵执行逐元素运算?
有没有什么有效的方法可以将密集矩阵转换为稀疏矩阵,反之亦然?
1 回答
这是不受支持的,因为严格来说,你会为任何显式零计算0/0 . 如果矩阵处于压缩模式,您可以解决方法,以确保调用:
然后将非零值映射为密集数组: