我无法弄清楚:如何使用 C++ lib Eigen 从矩阵中进行广播向量减法?
当我尝试这样的事情时:
Vector3d mean;
mean << 2, 3, -1;
MatrixXd pts(5, 3);
pts << 0, 0, 0,
1, 0, 0,
0, 1, 0,
0, 0, 1,
1, 1, 0;
MatrixXd results(5, 3);
results = pts.colwise() - mean;
我得到以下结果:
-2.00000 -2.00000 -2.00000
-2.00000 -3.00000 -3.00000
1.00000 2.00000 1.00000
-2.00000 -2.00000 ovf
-3.00000 -3.00000 0.00000
我做错了什么?谢谢!
如果我正确理解了这个问题,那么您正在尝试从
mean
矩阵的每一行中减去 pts
向量。问题是您使用的是 colwise()
而不是 rowwise()
。
using Eigen::MatrixXd;
using Eigen::Vector3d;
Vector3d mean;
mean << 2, 3, -1;
MatrixXd pts(5, 3);
pts << 0, 0, 0,
1, 0, 0,
0, 1, 0,
0, 0, 1,
1, 1, 0;
MatrixXd results(5, 3);
results = pts.rowwise() - mean.transpose();
此代码产生:
-2 -3 1
-1 -3 1
-2 -2 1
-2 -3 2
-1 -2 1