2017-11-02 8 views
0

はのは、私は2x3の次元Eigen::MatrixXd未平らに固有::固有のVectorXd :: MatrixXd

1,2,3, 
4,5,6 
に非平らこれまで私が欲しい6次元 Eigen::VectorXd

Eigen::VectorXd flat; 
flat.resize(6); 
flat << 1,2,3,4,5,6; 

を持っているとしましょう

これはどのようにして最も効率的に行われますか?

答えて

1
効率わから

ないが、これは動作します:

Eigen::Map<Eigen::MatrixXd> M(flat.data(), 3, 2); 
Eigen::MatrixXd M2(M.transpose()); 

あなたのマトリックスM2が望ま行列です。

+0

行行列としてマッピングした後、以下面倒であろうコピー。 – ggael

1

より直接的な変異体(内部、cantordustの答えは同じに帰着):

typedef Matrix<double,Dynamic,Dynamic,RowMajor> RowMatrixXd; 
MatrixXd M = RowMatrixXd::Map(flat.data(), 2, 3);