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

C++ 如何转换1x1特征值::C++;将稀疏矩阵转换为整数值?,c++,matrix,eigen,C++,Matrix,Eigen,这就是我试图做的,(我已经删除了技术部分并简化了问题) 我已经预先定义了这些矩阵,序列,u1,u2。它们必须是稀疏形式的矩阵 MatrixXi sequence(1,5) SparseMatrix<int> u1(5,1) SparseMatrix<int> u2(5,1) 但是我得到了这个错误 [Error] 'const Type' has no member named 'coeffRef'. 我知道这是因为1x1稀疏矩阵不等于整数。我应该如何处理这个问题?不

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

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

MatrixXi sequence(1,5)
SparseMatrix<int> u1(5,1)
SparseMatrix<int> u2(5,1)
但是我得到了这个错误

[Error] 'const Type' has no member named 'coeffRef'. 
我知道这是因为1x1稀疏矩阵不等于整数。我应该如何处理这个问题?不知何故,我必须将其转换为整数。

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

u3 = (u1.transpose() * u2);
sequence(0,0) = u3.coeffRef(0,0);
或者通过铸造:

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

我尝试过序列(0,I)=int((u1.transpose())*Amatrices[I]);要获取从类型“const type{aka const Eigen::SparseSparseProduct}”到类型“int”的[Error]无效转换,这些不是标准库类型。为什么不告诉我这个图书馆是从哪里来的呢?或者,如果您已经定义了它们,请提供定义。
u1'
也是5x1矩阵,
u2
。你不能繁殖those@Cheersandhth.-阿尔夫,他在标题中提到了这一点。莱伊将矩阵转置,将它们相乘。
sequence(0,0) = (SparseMatrix<int>(u1.transpose() * u2)).coeff(0,0);