c++ - Eigen 如何进行动态矩阵和向量乘法?

c++ - How can Eigen do dynamic matrix and vector multiplication?

我在做动态矩阵和向量点积时遇到了麻烦,令人惊讶的是,我没有让它找到任何解决方案,因为 Eigen 是一个流行的库。

所以代码真的很简单:

int k = 3;
MatrixXd m;
m.resize(k, k);
ArrayXd a;
a.resize(k);
std::cout << "Dot product: " << m*a << std::endl;

我收到错误

invalid operands to binary expression ('MatrixXd' (aka 'Matrix') and 'ArrayXd' (aka 'Array')) std::cout << "Dot product: " << m*a << std::endl;

我不知道做动态矩阵和向量乘法是否可行。同时,我发现向量和矩阵有.dot()方法,那么点积使用*还是.dot()

你需要有矩阵,而不是矩阵和数组的混合体。您需要使用 .matrix().

a 转换为数组(这是一个视图,没有额外的计算成本)

尝试:

std::cout << "Dot product: " << m*a.matrix() << std::endl;