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

时间:2015-09-13 21:35:36

标签: c++ vector eigen

因为这个问题有点长,所以在这里添加,我还想在向量中添加一行到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);
}

到目前为止,这就是我所拥有的。显然,如果我把我放在行中,我会收到错误。举个例子,我想将第一行ProdA和第一个Intd加到Finald向量的第一个空格中,然后循环遍历ProdA和Intd的每一行,并将它们全部加到Finald中。

提前致谢!

1 个答案:

答案 0 :(得分:-1)

我不是100%确定我正确理解你的问题,但我理解它的方式,这应该有效:

VectorXf ones(7);
ones << 1, 1, 1, 1, 1, 1, 1;

Finald = ProdA * ones + Intd;

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