假设我有一个大小为 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)
问题: Eigen 手册解释说您可以广播 vector ,但只能与矩阵(或二维数组)结合使用。用两个 vector 是怎么做到的?
最佳答案
你正在寻找一个外积,它就是一个标准矩阵积:
-P * P.transpose() + P.asDiagonal()
关于c++ - 在 Eigen C++ 中广播(两个) vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56502569/