假设我有一个大小为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)
问题: 本征手册说明,您可以广播矢量,但只能与矩阵(或二维数组)结合使用。用两个向量怎么做?
答案 0 :(得分:1)
您正在寻找一种外部产品,除了标准的矩阵产品外,什么都没有:
-P * P.transpose() + P.asDiagonal()