ベクトル乗算の結果を2倍に格納できない理由が分かりますか?アルマジロC++でベクタ乗算を2倍に戻す
double A = rowvec({1,3,4})*vec({5,6,7});
これは、constのARMA ::グルー「からの、適切な変換機能を 『与えない』 ...に 『constのダブル』が存在する。
まだその行列ベクトル乗算は、二重を与えます。 私はどのように取得することができます周り?
ありがとうございました!
ベクトル乗算の結果を2倍に格納できない理由が分かりますか?アルマジロC++でベクタ乗算を2倍に戻す
double A = rowvec({1,3,4})*vec({5,6,7});
これは、constのARMA ::グルー「からの、適切な変換機能を 『与えない』 ...に 『constのダブル』が存在する。
まだその行列ベクトル乗算は、二重を与えます。 私はどのように取得することができます周り?
ありがとうございました!
積の結果は、1x1の行列に変換することができarma::Glue
と呼ばれる式テンプレートです。このインラインを行うと、二重のを使用して明示的に評価することを割り当てるにはであり、唯一の要素は(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}));
};
[as_scalar()](http:// arma。 sourceforge.net/docs.html#as_scalar)を使用します。 [.eval()](http://arma.sourceforge.net/docs.html#eval_member)の使用は、パフォーマンスを低下させる可能性があるため、実際には推奨されません。 – hbrerkere
使用[as_scalar0(http://arma.sourceforge.net/docs.html#as_scalar)スカラーに1x1の行列を変換します。例: 'double A = as_scalar(rowvec(1,3,4))* vec({5,6,7})); – hbrerkere