我将稀疏矩阵定义为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)
答案 0 :(得分:0)
这是因为coeffRef
试图将新创建的元素初始化为0,但是无法将0分配给Vector3f
。因此解决方案是改用Array3f
:
typedef Eigen::Array<float, 3, 1> Vec3f;
当然,请注意,运算符*在Array
上的行为不同于在向量和矩阵上的行为。