1

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

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

最好的方法是什么?

4

3 回答 3

4

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

float r = a.cwiseProduct(b).sum();
于 2014-04-10T05:17:58.133 回答
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);

这是有关 Map 的文档

于 2014-03-26T13:39:46.217 回答
0

其实我发现了:

float r = (a.array()*b.array()).sum();
于 2014-03-26T13:31:32.407 回答