2013-12-11 26 views
2

我有2個向量和矩陣:如何創建特徵矩陣出2個載體

VectorXd A; 
VectorXd B; 
MatrixXd C; 

我應該怎樣有效的(沒有明確循環和工作快) 計算矩陣C的值,使得

C(i,k) = A(i) * B(k); 

假設矩陣C已經有適當的尺寸。

重要提示:我只需要幫助使用內置的Eigen語法。請不要CUDA/MKL/BLAS建議。 謝謝。

+0

你是否需要做到這一點沒有循環或儘可能有效地做到這一點?最小複雜度應爲A.size()* B.size(),因爲這些是您希望計算的元素的數量。 –

+0

@AbhishekBansal謝謝你的回答。我明白漸近算法的複雜性總是O(A.size()* B.size()),但係數很重要。 Eigen具有不尋常的語法,所以我只是不知道如何寫沒有循環的表達式。 –

回答

4

你正在尋找一個外部的產品這僅僅是一個標準的矩陣產品:

C = A * B.transpose(); 

由於目的地c沒有別名與該產品的操作可以節省一個臨時有:

C.noalias() = A * B.transpose(); 

noalias僅適用於矩陣產品。

+0

謝謝!這是我真正需要的。 –