我必须使用矩阵,并希望将它们视为一维列表并进行点积。我是以下,但它不起作用:
Eigen::MatrixXf a(9,9), b(9,9);
float r = a.array().dot(b.array());
最好的方法是什么?
答案 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);
答案 2 :(得分:0)
其实我发现了:
float r = (a.array()*b.array()).sum();