2016-02-28 12 views
1

我有一個功能,做了很多後/右乘法的轉換矩陣。現在我想轉換此功能使用特徵和問題是特徵變換類將乘法作爲前/左乘法運算。這意味着它在乘法時具有行矩陣格式,而存儲是列矩陣格式。設置本徵「轉換」類作爲後/右乘法的列主要

有沒有一種方法可以將Eigen :: Transformation類成員從行主修改爲列專業?

+0

你爲什麼說「它在乘法運算中有行矩陣格式」,爲什麼這會成爲一個問題? – ggael

回答

0

爲徵Matrix類的完整簽名是

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

的第四個參數Optionsdescribed as

選項是位字段。在這裏,我們只討論一個位:RowMajor它指定這種類型的矩陣使用行主存儲順序;默認情況下,存儲順序是列主要的。查看存儲訂單上的頁面。例如,這種類型是指行爲主的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模板參數,您也可以通過RowMajorColMajor。它產生的任何矩陣將遵循您指定的相同慣例。

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

再次_Options參數被描述爲

_Options具有相同的含義如在Matrix類。它允許指定DontAlign和/或RowMajor這些Options直接傳遞到底層矩陣類型

+0

謝謝你的答案,不幸的是,我們沒有機會改變實際矩陣在轉換類中的構造方式。在這種情況下,你推薦什麼? – happycoder

+0

如果您可以按照我特別要求的方式編輯Eigen :: Transform的答案,我很樂意將您的答案標記爲true。 – happycoder