Eigen C ++中的广播(两个)向量

时间:2019-06-08 00:49:20

标签: c++ eigen broadcasting

假设我有一个大小为3的输入ArrayXd:

P[1]                   
P[2]                 
P[3]                 

我所需的对称MatrixXd的大小为[3,3]:

-P[1]*P[1]+P[1]   -P[2]*P[1]         -P[3]*P[1]  
-P[1]*P[2]        -P[2]*P[2]+P[2]    -P[3]*P[2]
-P[1]*P[3]        -P[2]*P[3]         -P[3]*P[3]+P[3] 

伪代码解决方案:

-1.0 * P.broadcast.rowwise() * P.broadcast.colwise() + diag(P)

问题: 本征手册说明,您可以广播矢量,但只能与矩阵(或二维数组)结合使用。用两个向量怎么做?

1 个答案:

答案 0 :(得分:1)

您正在寻找一种外部产品,除了标准的矩阵产品外,什么都没有:

-P * P.transpose() + P.asDiagonal()