0
我必須在C++環境中開發normpdf MATLAB函數。 但是我得到了一個問題..C++ 11 normal_distribution和MATLAB normpdf
normpdf(x,u,sigma)在MATLAB 與normal_distribution gaussian(u,sigma)相似;
其中是X值? 這意味着我想要高斯函數不是高斯隨機的。 我如何用高斯分佈對輸出值進行採樣?
謝謝。
我必須在C++環境中開發normpdf MATLAB函數。 但是我得到了一個問題..C++ 11 normal_distribution和MATLAB normpdf
normpdf(x,u,sigma)在MATLAB 與normal_distribution gaussian(u,sigma)相似;
其中是X值? 這意味着我想要高斯函數不是高斯隨機的。 我如何用高斯分佈對輸出值進行採樣?
謝謝。
您可以輕鬆地編寫normpdf自己
inline double squared(double x)
{
return x*x;
}
double normpdf(double x, double u, double s) {
return (1.0/(s*sqrt(2.0*M_PI)))*exp(-0.5*squared(x-u)/squared(s));
}
UPDATE
這一條可能會快一點,少一個乘法
const double ONE_OVER_SQRT_2PI = 0.39894228040143267793994605993438;
double normpdf(double x, double u, double s) {
return (ONE_OVER_SQRT_2PI/s)*exp(-0.5*squared((x-u)/s));
}
謝謝,這是非常簡單的。 – LocoField 2015-04-01 18:20:06
但我想知道一種使用C++ 11的方法。 – LocoField 2015-04-01 18:21:11
@LocoField就我所見,標準C++庫中沒有這樣的函數。請檢查一下自己,http://en.cppreference.com/w/ – 2015-04-01 18:32:20