我有两个我定义类型的特征向量(vectorOne
和vectorTwo
)(请参阅下面的我的类型)。
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循环并迭代所有元素。但是有更高效或内置的本征函数吗?
答案 0 :(得分:1)
.array()
将矩阵转换为数组并在此处相乘。它会返回一个数组表达式,所以也许它不是你想要的。首先,您当然可以将数组乘以标量,这与矩阵的工作方式相同。数组与矩阵根本不同的是,当你将两个数组相乘时。矩阵将乘法解释为矩阵乘积,数组将乘法解释为系数乘积。因此,当且仅当它们具有相同的尺寸时,两个数组才能相乘。
.cwiseProduct
来获取矩阵作为结果。
https://eigen.tuxfamily.org/dox/group__QuickRefPage.html#matrixonly