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;
我在做动态矩阵和向量点积时遇到了麻烦,令人惊讶的是,我没有让它找到任何解决方案,因为 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;