gpt4 book ai didi

c++ - Matrix = Matrix.rowwise().reverse() Eigen rowwise 反转矩阵并将其分配回去使每一行对称

转载 作者:搜寻专家 更新时间:2023-10-31 00:27:42 24 4
gpt4 key购买 nike

简单的问题,但不知道为什么:

输入

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 使用惰性求值,我们需要覆盖 elementwise 操作的惰性求值。

所以这是可行的:

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

这在 Eigen 的 wiki 中称为“别名”:

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

关于c++ - Matrix = Matrix.rowwise().reverse() Eigen rowwise 反转矩阵并将其分配回去使每一行对称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47994169/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com