【问题标题】:Broadcasting (two) vectors in Eigen C++在 Eigen C++ 中广播(二)向量
【发布时间】:2019-06-08 14:28:33
【问题描述】:

假设我有一个大小为 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 手册解释说,您可以广播矢量,但只能与矩阵(或二维数组)结合使用。两个向量是怎么做的?

【问题讨论】:

    标签: c++ eigen broadcasting


    【解决方案1】:

    您正在寻找一个外积,它只不过是标准矩阵积:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-25
      • 2020-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-30
      相关资源
      最近更新 更多