在EIGEN中,c ++不能通过它的转置来乘以向量

时间:2015-09-07 13:36:35

标签: c++ eigen transpose

执行以下代码时,我收到此错误:“INVALID_VECTOR_VECTOR_PRODUCT__IF_YOU_WANTED_A_DOT_OR_COEFF_WISE_PRODUCT_YOU_MUST_USE_THE_EXPLICIT_FUNCTIONS”

#include <iostream>
#include <Eigen/Dense> 
using namespace Eigen;
int main()
{
    Vector3d v(1, 2, 3);
    Vector3d vT = v.transpose();
    Matrix3d ans = v*vT;
    std::cout << ans << std::endl;
}

在没有编译器抱怨的情况下,有没有其他方法可以做到这一点?

1 个答案:

答案 0 :(得分:5)

Vector3d被定义为列向量,因此vvT都是列向量。因此,操作v*vT没有意义。你想要做的是

Matrix3d ans = v*v.transpose();

或将vT定义为RowVector3d

Vector3d v(1, 2, 3);
RowVector3d vT = v.transpose();
Matrix3d ans = v*vT;