armadillo
こんにちは、線形代数と行列のライブラリを使用して、スクリプトを MATLAB から C++ に書き直しています。
多かれ少なかれ同じ出力を得るために、私はcoutメソッドを呼び出しました:
cout.precision(4);
cout.setf(ios::fixed);
しかし、私は別の結果を得ています:
マトラブの結果:
0.0000 0.0000 0.0000 0.0000 0.0000
0.0012 0.0014 0.0016 0.0020 0.0281
0.0396 0.0297 0.0297 0.0495 0.0976
アルマジロ c++ の結果:
0.0000 0.0000 0.0000 0.0000 0.0000
0.0012 0.0014 0.0016 0.0020 0.0282
0.0416 0.0312 0.0312 0.0520 0.1027
0.039
現在、これらの小さな不正確さ (に近い0.041
) が、変換された C++ コードのエラーによって引き起こされているのか、g++ と MATLAB の倍精度の通常の違いと見なされるべきなのかはわかりません。
私のコードでは、次のような多くのサイクルを使用しています。
xi_summed = xi_summed + normalise((trans % (alpha.col(t) * b.t())));
ここxi_summed
で、trans
、alpha
、およびb
は要素ごとの乗算であり、は転置および正規化は、行列配列の合計を にする関数です。arma::mat
%
mat::t()
A
1