简单的问题,但不知道为什么:
输入
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对于最后一个,为什么是这样的?
发布于 2017-12-27 15:01:47
我终于明白了。这是因为本征使用延迟评估,我们需要覆盖元素级运算的惰性计算。
因此,这是可行的:
Ha = Ha.rowwise().reverse().eval();这在艾根的wiki中被称为“混叠”:
https://stackoverflow.com/questions/47994169
复制相似问题