通过相应的元素乘以两个特征向量

时间:2018-01-13 12:27:22

标签: c++ eigen

我有两个我定义类型的特征向量(vectorOnevectorTwo)(请参阅下面的我的类型)。

typedef Matrix<double, 50, 1> myVector;

我想要第三个向量vectorThree,它将具有vectorOne和vectorTwo的乘法。但是我希望将每个元素乘以相应的元素 - 即vectorOne(i,0)乘以vectorTwo(i,0),这样我就可以得到类似下面的所有i。

  

vectorThree(i,0)= vectorOne(i,0)* vectorTwo(i,0)

我看到this并尝试了vectorOne.array() * vectorTwo.array(),但它没有用。

我知道我可以使用for循环并迭代所有元素。但是有更高效或内置的本征函数吗?

1 个答案:

答案 0 :(得分:1)

  1. 您应该能够通过.array()将矩阵转换为数组并在此处相乘。它会返回一个数组表达式,所以也许它不是你想要的。
  2. 来自Eigen documentation

      

    首先,您当然可以将数组乘以标量,这与矩阵的工作方式相同。数组与矩阵根本不同的是,当你将两个数组相乘时。矩阵将乘法解释为矩阵乘积,数组将乘法解释为系数乘积。因此,当且仅当它们具有相同的尺寸时,两个数组才能相乘。

    1. 否则,您可以使用矩阵的.cwiseProduct来获取矩阵作为结果。 https://eigen.tuxfamily.org/dox/group__QuickRefPage.html#matrixonly