Eigen如何做动态矩阵和向量乘法?

时间:2019-02-01 00:45:37

标签: c++ eigen

我在制作动态矩阵和矢量点积时遇到麻烦,而且令人惊讶的是,由于Eigen是一个流行的库,我没有找到任何解决方案。

所以代码非常简单:

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

我遇到错误

  

对二进制表达式无效的操作数(“ MatrixXd”(又名“ Matrix”)和“ ArrayXd”(又名“ Array”))       std :: cout <<“点积:” << m * a << std :: endl;

我对进行动态矩阵和向量乘法是否可行感到困惑。同时,我发现对于向量和矩阵有.dot()方法,因此对点积使用*.dot()是哪个方法?

1 个答案:

答案 0 :(得分:1)

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

尝试:

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