矩阵= 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称为 “走样”: