将标量添加到特征矩阵(向量)

Ker*_*rim 5 c++ eigen eigen3

我刚刚开始使用 Eigen 库,无法理解如何向所有矩阵成员添加标量值?

假设我有一个矩阵:

Eigen::Matrix3Xf mtx = Eigen::Matrix3Xf::Ones(3,4);
mtx = mtx + 1;    // main.cxx:104:13: error: invalid operands to binary expression ('Eigen::Matrix3Xf' (aka 'Matrix<float, 3, Dynamic>') and 'int')
Run Code Online (Sandbox Code Playgroud)

我期望生成的矩阵将填充 2

cht*_*htz 9

Eigen 的逐元素运算最好在Array域中完成。你可以做

mtx.array() += 1.f;
Run Code Online (Sandbox Code Playgroud)

一个稍微详细一点的选项是:

mtx += Eigen::Matrix3Xf::Ones(3,4);
Run Code Online (Sandbox Code Playgroud)

您还应该首先考虑将mtx其定义为:Array3Xf

Array3Xf mtx = Eigen::Array3Xf::Ones(3,4);
mtx += 1.f;
Run Code Online (Sandbox Code Playgroud)

如果您需要用作mtx矩阵(即在矩阵乘积中),您可以写

Vector3f v = mtx.matrix() * w; 
Run Code Online (Sandbox Code Playgroud)