您好我正在使用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