我想用密集矩阵和对角矩阵进行矩阵乘法。对角矩阵是使用vec.asDiagonal()
从向量生成的。
我想知道对角矩阵类型是只存储对角线,还是除了对角线之外充满零的密集矩阵?我想对角矩阵应该是Eigen稀疏矩阵的子矩阵。我搜索了文档并找到了这个
https://eigen.tuxfamily.org/index.php?title=SpecialMatrix#Diagonal_matrix,建议DiagonalMatrix继承自MatrixBase,而不是SparseMatrix。这是否意味着内存存储效率低下?
DiagonalMatrix
仅将对角线存储为密集向量。vec.asDiagonal()
和DiagonalMatrix
的返回类型都继承自DiagonalBase
而不是MatrixBase
(doc(。它们本质上是相同的:一个存储对密集向量的引用,而另一个是对角向量的所有者。