2015-09-13 87 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

即使它看起來是正確的答案,我仍然被低估了嗎? –