首页 > 解决方案 > 矩阵 C++ 中的两行与 Eigen 的内积

问题描述

我想做一个如下的内积。MatrixXd a= [1,2,3,4] MatrixXd b= [1,2,3,4]

a*b = [1,4,9,16] <=> c[i] = a[i]*b[i]。

如何用 Eigen MatrixXd 做到这一点?

谢谢。

标签: c++arraysmatrixeigen

解决方案


你描述的是一个元素产品,(“内积”通常是指点积)。你可以写:

a.cwiseProduct(b);
// or
a.array() * b.array();

但是,如果您主要使用逐元素操作,则应将aand声明bArray

Eigen::ArrayXd a{{1,2,3,4}}, b{{1,2,3,4}}; // {}-initialization requires C++11, and the development branch of Eigen
Eigen::ArrayXd c = a*b;

Godbolt 演示:https ://godbolt.org/z/BDprOz


推荐阅读