你知道为什么我不能将矢量乘法的结果加倍吗?
double A = rowvec({1,3,4})*vec({5,6,7});
它给出"没有合适的转换函数来自" const arma :: Glue" ... to" const double"存在。
仍然是矩阵向量乘法给出了双精度。 我该怎么走?
谢谢!
答案 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}));
};