2013-12-11 31 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

谢谢!这是我真正需要的。 –