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

In EIGEN c++ cannot multiply vector by it's 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;
}

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

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

Matrix3d ans = v*v.transpose();

或将 vT 定义为 RowVector3d

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