C++ 中 Eigen 的 DiagonalMatrix 类型的高效存储
Efficient Storage for Eigen's DiagonalMatrix type in C++
我想用密集矩阵和对角矩阵做矩阵乘法。对角矩阵是使用 vec.asDiagonal()
.
从向量生成的
我想知道 DiagonalMatrix 类型是否只存储对角线,或者它是否是除对角线外全为零的密集矩阵?我想 DiagonalMatrix 应该是 Eigen 的 SparseMatrix 的 child。我搜索了文档并找到了这个
https://eigen.tuxfamily.org/index.php?title=SpecialMatrix#Diagonal_matrix,表明 DiagonalMatrix 继承自 MatrixBase,而不是 SparseMatrix。这是否意味着内存存储效率低下?
DiagonalMatrix
仅将对角线存储为密集向量。 vec.asDiagonal()
和 DiagonalMatrix
的 return 类型都继承自 DiagonalBase
而不是 MatrixBase
(doc)。它们本质上是相同的:一个存储对密集向量的引用,而另一个是对角线向量的所有者。
我想用密集矩阵和对角矩阵做矩阵乘法。对角矩阵是使用 vec.asDiagonal()
.
我想知道 DiagonalMatrix 类型是否只存储对角线,或者它是否是除对角线外全为零的密集矩阵?我想 DiagonalMatrix 应该是 Eigen 的 SparseMatrix 的 child。我搜索了文档并找到了这个
https://eigen.tuxfamily.org/index.php?title=SpecialMatrix#Diagonal_matrix,表明 DiagonalMatrix 继承自 MatrixBase,而不是 SparseMatrix。这是否意味着内存存储效率低下?
DiagonalMatrix
仅将对角线存储为密集向量。 vec.asDiagonal()
和 DiagonalMatrix
的 return 类型都继承自 DiagonalBase
而不是 MatrixBase
(doc)。它们本质上是相同的:一个存储对密集向量的引用,而另一个是对角线向量的所有者。