我必须矩阵并希望将它们视为一维列表并进行点积。我以下,但它不工作:
Eigen::MatrixXf a(9,9), b(9,9);
float r = a.array().dot(b.array());
最好的方法是什么?
计算 2 个矩阵的系数乘积是一种常见模式,因此 Eigen 提供了 cwiseProduct() 方法来优雅地编写它。这将导致以下表达式:
float r = a.cwiseProduct(b).sum();
试试这个。:)
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);
这是有关 Map 的文档。
其实我发现了:
float r = (a.array()*b.array()).sum();