特征如何进行动态矩阵和向量乘法

How can Eigen do dynamic matrix and vector multiplication?

本文关键字:向量 何进行 动态 特征      更新时间:2023-10-16

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

所以代码非常简单:

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

我收到错误

二进制表达式的操作数无效("MatrixXd"(又名"矩阵")和"ArrayXd"(又名"数组")) std::cout <<"点积: " <<m*a <<std::endl;

我很困惑做动态矩阵和向量乘法是否可行。同时,我发现向量和矩阵有.dot()方法,那么使用哪一种,*还是.dot()点积?

你需要有矩阵,而不是矩阵和数组的混合。您需要使用 .matrix()a转换为数组(它是一个视图,没有额外的计算成本)。

尝试:

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