我有一个Nx3特征矩阵。
我有一个Nx1 Egein marix。
我试图将Nx3中每一行的系数乘以Nx1中相应的标度,以便可以缩放一堆3d vector 。

我敢肯定,我忽略了一些显而易见的事情,但我无法使其正常工作。

#include <Eigen/Dense>

MatrixXf m(4, 3);
m << 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12;
MatrixXf dots(4, 1)
dots << 2,2,2,2;

我想像这样使矩阵为Nx3:
2,4,6
8,10,12,
14,16,18,
20,22,24

最佳答案

您可以使用广播:

m = m.colwise().cwiseProduct(dots);

或观察到您要做的就是应用非均匀缩放:
m = dots.asDiagonal() * m;

这两个表达式将生成相似的代码。

09-30 00:22