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

时间:2015-07-01 01:22:19

标签: c++ matrix eigen

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

我预定了这些矩阵,序列,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稀疏矩阵不等于整数。我该怎么做呢?不知何故,我必须将其转换为整数。

1 个答案:

答案 0 :(得分:0)

问题是(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);