Return 用犰狳 C++ 从向量乘法中加倍
Return double from vector multiplication with Armadillo C++
你知道为什么我不能将向量乘法的结果存储在双精度中吗?
double A = rowvec({1,3,4})*vec({5,6,7});
它给出 "no suitable conversion function from "const arma::Glue"... "const double" exists.
矩阵向量乘法仍然是双倍的。
我该如何出行?
谢谢!
乘积的结果是一个名为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);
};
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}));
};
你知道为什么我不能将向量乘法的结果存储在双精度中吗?
double A = rowvec({1,3,4})*vec({5,6,7});
它给出 "no suitable conversion function from "const arma::Glue"... "const double" exists.
矩阵向量乘法仍然是双倍的。 我该如何出行?
谢谢!
乘积的结果是一个名为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);
};
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}));
};