将特征“转换”类设置为后期/右侧乘法的列主要

时间:2016-02-28 20:07:43

标签: c++ matrix eigen

我有一个函数可以对转换矩阵进行大量的后/右乘法。现在我想将此函数转换为使用Eigen,问题是Eigen Transformation类将乘法作为前/左乘法。这意味着它在乘法期间具有行矩阵格式,而存储是以列矩阵格式。

有没有办法将Eigen :: Transformation类成员从row major改为column major?

1 个答案:

答案 0 :(得分:0)

Eigen Matrix类的完整签名是

Matrix<typename Scalar,
       int RowsAtCompileTime,
       int ColsAtCompileTime,
       int Options = 0,
       int MaxRowsAtCompileTime = RowsAtCompileTime,
       int MaxColsAtCompileTime = ColsAtCompileTime>

第四个参数Optionsdescribed as

  

选项是一个位字段。在这里,我们只讨论一个位:RowMajor它指定此类型的矩阵使用行主存储顺序;默认情况下,存储顺序为column-major。请参阅存储订单页面。例如,此类型表示行主3x3矩阵

所以你可以说,例如,

Matrix<int, 3, 4, ColMajor> foo;    // column major
Matrix<int, 4, 3, RowMajor> bar;    // row major

More documentation on Storage Orders

如果您引用的转化是Eigen::Transform,那么它也会有Options模板参数,您也可以通过RowMajor vs ColMajor。它生成的任何矩阵都遵循您指定的相同约定。

Transform<typename Scalar,
          int Dim,
          int Mode,
          int _Options = AutoAlign>

_Options参数再次被描述为

  

_OptionsMatrix课程中的含义相同。它允许指定DontAlign和/或RowMajor这些Options会直接传递给基础矩阵类型