2017-12-27 17 views
1

簡単な質問を行い、なぜ理解できない。マトリックス= Matrix.rowwise())(逆固有行方向行列を反転し、それをバック割り当てる各行対称

入力

Eigen::MatrixXd Ha(2, 3); 
Ha << 1, 2, 3, 4, 5, 6; 
std::cout << "Ha: " << std::endl << Ha << std::endl; 

Ha.rowwise().reverse(); 
std::cout << "Ha: " << std::endl << Ha.rowwise().reverse() << std::endl; 

Ha = Ha.rowwise().reverse(); 
std::cout << "Ha: " << std::endl << Ha.rowwise().reverse() << std::endl; 

を最後の一つを出力

Ha: 
1 2 3 
4 5 6 
Ha: 
3 2 1 
6 5 4 
Ha: 
3 2 3 
6 5 6 

、なぜケースはありますか?

答えて

3

まあ、私は最後に考え出した。 これはEigenが遅延評価を使用し、要素単位操作の遅延評価をオーバーライドする必要があるためです。

は、これは動作します:

Ha = Ha.rowwise().reverse().eval(); 

これは、固有のウィキでは "エイリアス" と呼ばれている:

https://eigen.tuxfamily.org/dox/group__TopicAliasing.html

関連する問題