我處於從Matlab到C++的代碼轉換過程中,出於一些重要的原因,我必須獲得'正常'函數的累積分佈函數(在matlab中,'norm '),均值= 0,色散= 1。Matlab - 累積分佈函數(CDF)
在Matlab中的實現是這樣的:
map.c = cdf('norm', map.c, 0,1);
這是假設是從map.c.直方圖均衡化
由於缺少小數位,因此將問題轉換爲C++時會出現問題。我嘗試了很多典型的CDF實現:如C++代碼,我發現在這裏, Cumulative Normal Distribution Function in C/C++但我得到了一個重要的缺乏小數的,所以我試圖升壓實現:
#include "boost/math/distributions.hpp"
boost::math::normal_distribution<> d(0,1);
,但它畢竟是不一樣的作爲Matlab的實現(我想它似乎更加精確!)
有沒有人知道我可以找到原始的Matlab來源爲這樣一個過程,或者哪個是我應該考慮的小數的正確數量?
在此先感謝!
如果助推劑更精確,對你來說不是更好嗎? – Shahbaz
事情是,我已經有一些結果與我應該競選的這種Matlab的CDF,所以我應該使用相同的算法...... :( – Ciller
「缺少小數」是一個不精確的短語。雙精度浮點數是這是MATLAB使用的標準精度,與C++中使用'double'類型的精度相同。什麼結果讓你說你有一個精度問題?是否有可能沒有足夠精度地打印它們,導致你相信沒有足夠的內部精度? – Peter