您好我正在使用armadillo
库重写一个脚本从MATLAB到C++用于线性代数和矩阵。matlab和C++精度
用于获得或多或少相同的输出I称为COUT方法:
cout.precision(4);
cout.setf(ios::fixed);
但我发现了不同的结果:
Matlab的结果:
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
现在,我不知道,如果thoose有点不精确(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()
被调换和规范的功能,使的条目米atrix A
数组总和为1
。
对我来说,这看起来不像正常的差异。 – WeaselFox 2012-02-16 12:56:07
请给我们一些代码。 – 2012-02-16 12:59:11
我想重写HMM工具包的一些功能,并且有超过500行C++代码。我不知道什么行后,因为我不知道错误应该在哪里 – nkint 2012-02-16 13:01:22