将标量添加到特征矩阵(向量)
Adding scalar to Eigen matrix (vector)
我刚开始使用 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')
我预计生成的矩阵将填充 2
快速搜索一下这个库的文档,好像没有这样的方法。事实上,矩阵代数一般没有标量和。您可以自己实现这样的方法,只需将标量添加到遍历所有列和行的每个矩阵 i,j 分量即可。
但是您确定您不是要进行标量乘法吗?
最好在 Array
域中使用 Eigen 进行逐元素运算。你可以做到
mtx.array() += 1.f;
稍微详细一点的选项是:
mtx += Eigen::Matrix3Xf::Ones(3,4);
您还应该首先考虑将 mtx
定义为 Array3Xf
:
Array3Xf mtx = Eigen::Array3Xf::Ones(3,4);
mtx += 1.f;
如果你需要使用mtx
作为矩阵(即在矩阵乘积中),你可以写
Vector3f v = mtx.matrix() * w;
我刚开始使用 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')
我预计生成的矩阵将填充 2
快速搜索一下这个库的文档,好像没有这样的方法。事实上,矩阵代数一般没有标量和。您可以自己实现这样的方法,只需将标量添加到遍历所有列和行的每个矩阵 i,j 分量即可。
但是您确定您不是要进行标量乘法吗?
最好在 Array
域中使用 Eigen 进行逐元素运算。你可以做到
mtx.array() += 1.f;
稍微详细一点的选项是:
mtx += Eigen::Matrix3Xf::Ones(3,4);
您还应该首先考虑将 mtx
定义为 Array3Xf
:
Array3Xf mtx = Eigen::Array3Xf::Ones(3,4);
mtx += 1.f;
如果你需要使用mtx
作为矩阵(即在矩阵乘积中),你可以写
Vector3f v = mtx.matrix() * w;