使用Eigen计算矩阵转置乘矩阵:
,
发现结果不对,记录如下:
Eigen::MatrixXd MatX;
MatX.resize(3, 3);
for (int i = 0; i < 3; ++i) {
float x = 3 * i;
float y = 3 * i + 1;
float z = 3 * i + 2;
MatX.row(i) = Eigen::RowVector3d(x, y, z);
}
std::cout << "MatX" << std::endl;
std::cout << MatX << std::endl;
std::cout << "transpose" << std::endl;
Eigen::Matrix3d t2 = MatX.transpose() * MatX;
std::cout << t2 << std::endl;
运行结果:
MatX
0 1 2
3 4 5
6 7 8
transpose
45 54 63
54 66 78
63 63 63
发现最后一行有3个63,并且transpose不是对称矩阵,百思不得其解,发现是Eigen的一个坑,后来删除Eigen3.2,换成Eigen3.4恢复正常
正确的运行结果:
MatX
0 1 2
3 4 5
6 7 8
transpose
45 54 63
54 66 78
63 78 93