在 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
定义为列向量,因此 v
和 vT
都是列向量。因此,v*vT
操作没有意义。你要做的是
Matrix3d ans = v*v.transpose();
或将 vT
定义为 RowVector3d
Vector3d v(1, 2, 3);
RowVector3d vT = v.transpose();
Matrix3d ans = v*vT;
执行以下代码时出现此错误:"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
定义为列向量,因此 v
和 vT
都是列向量。因此,v*vT
操作没有意义。你要做的是
Matrix3d ans = v*v.transpose();
或将 vT
定义为 RowVector3d
Vector3d v(1, 2, 3);
RowVector3d vT = v.transpose();
Matrix3d ans = v*vT;