C ++ 11 normal_distribution和MATLAB normpdf

时间:2015-04-01 17:39:28

标签: c++11 normal-distribution

我必须在C ++环境中开发normpdf MATLAB函数。 但我遇到了问题......

MATLAB中的

normpdf(X,u,sigma) 与normal_distribution gaussian(u,sigma)相似;

哪里是X值? 这意味着我希望高斯函数不是高斯随机的。 我如何使用高斯分布对输出值进行采样?

感谢。

1 个答案:

答案 0 :(得分:0)

你可以轻松自己编写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));
}

更新

这个可能会快一点,少一个乘法

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));
}