Вернуть удвоение из векторного умножения с переполнением стека Armadillo

Знаете ли вы, почему я не могу сохранить в два раза результат умножения вектора?

double A = rowvec({1,3,4})*vec({5,6,7});

Он не дает «подходящей функции преобразования из« const arma :: Glue »… в« const double ».

Тем не менее, умножение матричного вектора дает двойное число.
Как я могу обойти?

Спасибо!

1

Решение

Результатом продукта является шаблон выражения, называемый arma::Glue который может быть преобразован в матрицу 1×1. Чтобы сделать это встроенным и назначить его для двойной оценки, явно, используя .eval() и возьмите единственный элемент, который является (0,0).

#include <armadillo>

int main() {
using arma::rowvec;
using arma::vec;
double A = (rowvec({1,3,4})*vec({5,6,7})).eval()(0,0);
};

N.B .: Ты имел ввиду dot(a,b)?

#include <armadillo>

int main() {
using arma::rowvec;
using arma::vec;
using arma::dot;
double A = dot(rowvec({1,3,4}), vec({5,6,7}));
};
1

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

Других решений пока нет …

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