使用Armadillo C ++从向量乘法中返回double

时间:2017-05-21 22:09:33

标签: c++ vector armadillo vector-multiplication

你知道为什么我不能将矢量乘法的结果加倍吗?

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

它给出"没有合适的转换函数来自" const arma :: Glue" ... to" const double"存在。

仍然是矩阵向量乘法给出了双精度。 我该怎么走?

谢谢!

1 个答案:

答案 0 :(得分:1)

产品的结果是一个名为arma::Glue的表达式模板,可以转换为1x1矩阵。要内联并将其分配给double,使用.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}));
};