向量元素类型的本征稀疏矩阵的CoeffRef误差

时间:2019-04-29 16:20:43

标签: c++ sparse-matrix eigen

我将稀疏矩阵定义为Eigen::SparseMatrix< Eigen::Matrix<float, 3, 1> >,这意味着矩阵的每个元素都是3x1向量。 但是,当我调用函数CoeffRef以便将向量分配给元素时,在SparseMatrix.h中出现以下错误:

no operator "=" matches these operands. 

,错误来自函数insert,而它为Eigen::Matrix< float, 3, 1>的{​​{1}}分配了一个整数(考虑到m_data.value(p) = 0是向量3x1和0是一个整数)。

在这行代码(SparseMatrix.h的1235行)中,似乎没有考虑矩阵的模板类型进行比较。

我想知道您是否有解决这种错误的想法?

m_data.value(p)

1 个答案:

答案 0 :(得分:0)

这是因为coeffRef试图将新创建的元素初始化为0,但是无法将0分配给Vector3f。因此解决方案是改用Array3f

typedef Eigen::Array<float, 3, 1> Vec3f;

当然,请注意,运算符*在Array上的行为不同于在向量和矩阵上的行为。