Eigen::Matrixのpybind11での使い方
Eigenではデフォルトで行列をFortranのようにCol Major方式で扱っている. この方式では,Row Major方式を採用しているpython numpy arrayとの連携で参照渡しをする際に問題が発生する.
そのため,C++で使うEigenのMatrixをRowMajorに変更する必要がある.
template <typename T> using RMatrix = Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor>;
これをC++プログラムの最初に書けばいい.
なお,Vectorを扱う際はそもそもRow MajorとCol Majorで違いがないため,通常の使い方で構わない.
http://eigen.tuxfamily.org/dox/TopicFunctionTakingEigenTypes.html#TopicUsingRefClass