C++ 向特征矩阵(向量)添加标量

C++ 向特征矩阵(向量)添加标量,c++,eigen,eigen3,C++,Eigen,Eigen3,我刚开始使用特征库,不知道如何向所有矩阵的成员添加标量值 假设我有一个矩阵: Eigen::Matrix3Xf mtx=Eigen::Matrix3Xf::Ones3,4; mtx=mtx+1;//main.cxx:104:13:错误:二进制表达式'Eigen::Matrix3Xf'aka'Matrix'和'int'的操作数无效 我希望生成的矩阵将填充2个对该库的文档进行快速搜索—似乎没有这样的方法。事实上,矩阵代数通常没有标量和。您可以自己实现这种方法,只需将标量添加到迭代所有列和行的每个矩阵

我刚开始使用特征库,不知道如何向所有矩阵的成员添加标量值

假设我有一个矩阵:

Eigen::Matrix3Xf mtx=Eigen::Matrix3Xf::Ones3,4; mtx=mtx+1;//main.cxx:104:13:错误:二进制表达式'Eigen::Matrix3Xf'aka'Matrix'和'int'的操作数无效
我希望生成的矩阵将填充2个

对该库的文档进行快速搜索—似乎没有这样的方法。事实上,矩阵代数通常没有标量和。您可以自己实现这种方法,只需将标量添加到迭代所有列和行的每个矩阵i,j组件中


但是,你确定你不是想做标量乘法吗?

快速搜索这个库的文档,似乎没有这样的方法。事实上,矩阵代数通常没有标量和。您可以自己实现这种方法,只需将标量添加到迭代所有列和行的每个矩阵i,j组件中


但是,您确定您不是要执行标量乘法吗?

使用本征值的元素操作最好在数组域中完成。你能行

mtx.array() += 1.f;
一个稍微详细一点的选项是:

mtx += Eigen::Matrix3Xf::Ones(3,4);

您也应该首先考虑将MTX定义为ARYAY3XF:

Array3Xf mtx = Eigen::Array3Xf::Ones(3,4);
mtx += 1.f;
如果需要将mtx用作矩阵,即矩阵产品中的矩阵,则可以编写

Vector3f v = mtx.matrix() * w; 

具有特征值的元素操作最好在阵列域中完成。你能行

mtx.array() += 1.f;
一个稍微详细一点的选项是:

mtx += Eigen::Matrix3Xf::Ones(3,4);

您也应该首先考虑将MTX定义为ARYAY3XF:

Array3Xf mtx = Eigen::Array3Xf::Ones(3,4);
mtx += 1.f;
如果需要将mtx用作矩阵,即矩阵产品中的矩阵,则可以编写

Vector3f v = mtx.matrix() * w; 

谢谢你的回复。在matlab中,有向矩阵向量添加标量这样的操作,这大大简化了计算。感谢您的回复。在matlab中,有向矩阵向量添加标量这样的操作,这大大简化了计算。本征数组有按系数进行加法和乘法的方法和运算符。本征数组有按系数进行加法和乘法的方法和运算符。感谢您的回复。是Array3Xf mtx=本征::Array3Xf::Ones3,4;只允许我将其用作矩阵/向量,或者还有其他一些优点?请阅读Eigen docu的快速参考页面:谢谢您的回复。是Array3Xf mtx=本征::Array3Xf::Ones3,4;仅允许我将其用作矩阵/向量,或者还有其他优势?请阅读Eigen docu的快速参考页面: