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