C++11 normal_distribution 和 MATLAB 范数pdf

C++11 normal_distribution and MATLAB normpdf

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

MATLAB 中的 normpdf(X, u, sigma) 类似于 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));
}

更新

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

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