C ++ - Как Eigen может делать динамическое матричное и векторное умножение? - PullRequest
0 голосов
/ 01 февраля 2019

У меня проблемы с созданием продукта с динамическими матрицами и векторными точками, и, что удивительно, я не нашел решения, поскольку Eigen - распространенная библиотека.

Итак, код действительно прост:

int k = 3;
MatrixXd m;
m.resize(k, k);
ArrayXd a;
a.resize(k);
std::cout << "Dot product: " << m*a << std::endl;

Я получил ошибку

недопустимые операнды для двоичного выражения (MatrixXd (Matrix) и ArrayXd (Array)) std ::cout << "Dot product:" << m * a << std :: endl; </p>

Я запутался, если выполнимо умножение динамических матриц и векторов.Между тем я обнаружил, что существует метод .dot() для векторов и матриц, поэтому какой из них использовать, * или .dot() для точечного произведения?

1 Ответ

0 голосов
/ 01 февраля 2019

Вам нужно иметь матрицы, а не смесь матриц и массивов.Вам нужно преобразовать a в массив (это представление, без дополнительных вычислительных затрат) с .matrix().

Попробуйте:

std::cout << "Dot product: " << m*a.matrix() << std::endl;
...