2015-09-13 65 views
-1

由于问题会有点长,所以在这里我添加一个向量,我也想在向量中添加一行到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

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

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

Finald = ProdA * ones + Intd; 

我不知道,如果你的矩阵库(这似乎是Eigen)将矢量存储为行或列矢量。因此,您可能必须改用ones.transpose()

+0

工程就像一个魅力,谢谢! – TheProgramMAN123

+1

@ TheProgramMAN123如果答案回答您的问题,请将其标记为已接受。有关更多信息,请参阅[此链接](http://stackoverflow.com/help/someone-answers)。 –

+0

即使它看起来是正确的答案,我仍然被低估了吗? –