Вернуть удвоение из векторного умножения с Armadillo C++
Знаете ли вы, почему я не могу сохранить в два раза результат умножения вектора?
double A = rowvec({1,3,4})*vec({5,6,7});
Он не дает "подходящей функции преобразования из"const arma::Glue"... в" const double ".
Тем не менее, умножение матричного вектора дает двойное число. Как я могу обойти?
Спасибо!
1 ответ
Решение
Результатом продукта является шаблон выражения, называемый arma::Glue
который может быть преобразован в матрицу 1x1. Чтобы сделать это встроенным и назначить его для двойной оценки, явно, используя .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);
};
NB: Вы имели в виду 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}));
};