你知道为什么我不能将向量乘法的结果存储为双倍吗?
double A = rowvec({1,3,4})*vec({5,6,7});
它给出了“不存在从“const arma::Glue”到“const double”的合适转换函数。
矩阵向量乘法仍然是双倍的。我怎样才能绕过?
谢谢!
你知道为什么我不能将向量乘法的结果存储为双倍吗?
double A = rowvec({1,3,4})*vec({5,6,7});
它给出了“不存在从“const arma::Glue”到“const double”的合适转换函数。
矩阵向量乘法仍然是双倍的。我怎样才能绕过?
谢谢!
乘积的结果是一个表达式模板,调用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);
};
注意:你的意思是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}));
};