如何将 1x1 Eigen::C++ 稀疏矩阵转换为整数值?

How do I convert a 1x1 Eigen::C++ sparse matrix to an integer value?

这就是我想要做的,(我删除了技术部分并简化了问题)

我已经预定义了这些矩阵,序列,u1,u2。它们必须是稀疏形式的矩阵。

MatrixXi sequence(1,5)
SparseMatrix<int> u1(5,1)
SparseMatrix<int> u2(5,1)

现在,我想执行sequence(0)=u1'*u2。这是我的代码。

sequence(i)=(((u1.transpose())*u2).coeffRef(0,0))

但是我得到这个错误

[Error] 'const Type' has no member named 'coeffRef'. 

我知道这是因为 1x1 稀疏矩阵不等于整数。我应该如何处理这个问题?不知何故,我必须将其转换为整数。

问题是 (u1.transpose() * u2) 实际上(默认情况下)不是矩阵对象,而是 Eigen::SparseSparseProduct。您可以通过将其分配给临时变量来解决此问题:

u3 = (u1.transpose() * u2);
sequence(0,0) = u3.coeffRef(0,0);

或通过转换它:

sequence(0,0) = (SparseMatrix<int>(u1.transpose() * u2)).coeff(0,0);