这就是我想要做的,(我已经删除了技术部分并简化了问题)
我预定了这些矩阵,序列,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稀疏矩阵不等于整数。我该怎么做呢?不知何故,我必须将其转换为整数。
答案 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);