我尝试从使用StdC++dynamic container for Vectors创建的3D矩阵中读取元素。下面是我如何初始化矩阵:
在名为“Classa”的类中,我有以下公共成员:
<代码双倍a,b,C/代码>
然后在我的主文件中,我用以下内容填充矩阵:
现在,当我将双子读入使用Eigen/Dense库创建的向量时,向量的类型变成了一个矩阵:
Vector3d vectorEigen;
vectorEigen << matrix3D[i][j][k].a, matrix3D[i][j][k].b, matrix3D[i][j][k].c;
并且
有人知道我错过了什么吗?
内部特征将向量表示为只有一列的矩阵。所以向量(就像“普通”矩阵一样)实际上是
然而,为了向程序员简单起见,Eigen使用C++的 Matrix template类实际上有6个模板参数,最后3个是默认参数。以下是完整的签名: 如果编译器在错误消息中引用 因此 类型根本没有改变,您只是在代码中使用typedef Matrix<double, 3, 1> Vector3d
template<typename _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows, int _MaxCols>
class Eigen::Matrix< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols >
如果您只是对用C++实现矩阵和向量感兴趣,那么完全可以忽略我的回答。
但是,如果您只需要使用矩阵和向量,那么您可以尝试OpenCV中的Mat和Vec类。这里有一个很好的关于MAT的教程。
另外,如果你不一定需要使用C++,那么Octave就更加方便了。