矩阵= Matrix.rowwise()反向()本征横行反转的矩阵再次分配给变量使得每一行对称

简单的问题,但不能图为什么:矩阵= 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

对于最后一个,为什么是这样?

回答:

好吧,我终于想通了。 这是因为Eigen使用懒惰评估,我们需要重写元素操作的懒惰评估。

所以此工程:

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

这在本征的wiki称为 “走样”:

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

以上是 矩阵= Matrix.rowwise()反向()本征横行反转的矩阵再次分配给变量使得每一行对称 的全部内容, 来源链接: utcz.com/qa/265803.html

回到顶部