我很难弄清楚:如何使用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() .
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