如何使用C ++中的Eigen库创建高效的3D矩阵?

时间:2016-10-23 20:37:30

标签: c++ eigen robotics

对于机器人项目,我需要一个预定义大小的3D矩阵。使用Eigen库,我看不出如何: 1.)创建一个大的预定义矩阵,似乎我必须使用matrixXd但这是一个动态矩阵。 2.)创建一个3D矩阵,i。即size =(int从200到1000)和matrix (size, size, size)

2 个答案:

答案 0 :(得分:0)

好吧,我找到了一种在项目中构建3d矩阵的方法。 使用向量:

typedef vector<Matrix<double, Dynamic, Dynamic>> M3;

如果要初始化尺寸为(k,m,n)的预定义矩阵,只需使用:

M3 W(k, M2(m, n));

这种方式很容易存储特征矩阵。但是,如果要计算3d矩阵,则应将其切成许多2d矩阵,然后使用循环获取3d结果。

答案 1 :(得分:-1)

  1. 不建议使用静态分配创建大型矩阵,因为这会降低性能。
  2. 您可以创建2D矩阵向量,而不是3D矩阵。

    例如:Eigen :: MatrixX tmp;