如何对称特征C 中的稀疏基质

How to symmetrize a sparse matrix in Eigen C++?

本文关键字:特征 何对称 对称      更新时间:2023-10-16

我在eigen c 中具有稀疏的矩阵A。现在,我想将其对称为另一个稀疏矩阵Asym

我希望它会像:

一样简单
Eigen::SparseMatrix<FLOATDATA> A;
...
Eigen::SparseMatrix<FLOATDATA> Asym = 0.5*(A+A.transpose()); // error here

,但由于明显的原因,它给出以下断言失败错误:

error: static assertion failed: THE_STORAGE_ORDER_OF_BOTH_SIDES_MUST_MATCH

我的问题是如何整洁地进行上述操作C ?

制作代码编译的最简单方法是将转置矩阵评估为正确存储顺序的临时性:

Eigen::SparseMatrix<FLOATDATA> Asym = 0.5*(A+Eigen::SparseMatrix<FLOATDATA>(A.transpose())));