如何将矩阵的行和加到向量中

How to add sum of rows of a matrix into vector?

本文关键字:向量      更新时间:2023-10-16

由于这个问题有点长,我将在这里添加,我还想在一个向量中添加一行到Finald向量。

MatrixXf ProdA(7, 7);;
VectorXf Intd(7);
VectorXf Finald(7);
ProdA << 
    7, 5, 1, 9, 11, 2, 0,
    5, 2, 8, 3, 11, 3, 3,
    3, 9, 0, 1, 3, 1, 7,
    6, 0, 1, 9, 11, 33, 3,
    3, 5, 3, 3, 4, 3, 3,
    3, 9, 1, 1, 0, 1, 15,
    6, 2, 6, 2, 5, 12, 3,
Intd << 4, 5, 2, 12, 4, 1, 6;
Finald << 0, 0, 0, 0, 0, 0, 0;
for (int i = 0; i < 7; i++){
    Finald.row(i) += ProdA.rowwise().sum();
        Finald.row(i) += Intd.row(i);
}

到目前为止,这是我得到的。很明显,如果我把I按行输入,就会出现错误。例如,我想将ProdA的第一行和Intd的第一个数字添加到Finald向量的第一个空格中,然后循环遍历ProdA和Intd的每一行,并将它们全部求和到Finald中。

提前感谢!

我不能100%肯定我正确理解你的问题,但我理解它的方式,这应该工作:

VectorXf ones(7);
ones << 1, 1, 1, 1, 1, 1, 1;
Finald = ProdA * ones + Intd;

我不确定你的矩阵库(这似乎是特征)存储向量作为行或列向量。因此,您可能不得不使用ones.transpose()