В EIGEN c ++ не может умножить вектор на его транспонирование

При выполнении кода ниже я получаю эту ошибку: «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

Решение

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;
5

Другие решения


По вопросам рекламы [email protected]