如何为Eigen :: Array调用点

时间:2014-03-26 12:58:15

标签: eigen eigen3

我必须使用矩阵,并希望将它们视为一维列表并进行点积。我是以下,但它不起作用:

Eigen::MatrixXf a(9,9), b(9,9);
float r = a.array().dot(b.array());

最好的方法是什么?

3 个答案:

答案 0 :(得分:4)

计算2个矩阵的系数乘积是一种常见的模式,因此Eigen提供了cwiseProduct()方法来优雅地编写它。这将导致以下表达式:

float r = a.cwiseProduct(b).sum();

答案 1 :(得分:1)

试试这个。 :)

Eigen::MatrixXf a(9, 9), b(9, 9);

Eigen::Map<Eigen::VectorXf> aVector(a.data(), 81);
Eigen::Map<Eigen::VectorXf> bVector(b.data(), 81);

float squareError = aVector.dot(bVector);

这是documentation about Map

答案 2 :(得分:0)

其实我发现了:

float r = (a.array()*b.array()).sum();