【问题标题】:C++11 normal_distribution and MATLAB normpdfC++11 normal_distribution 和 MATLAB normpdf
【发布时间】:2015-04-02 10:23:08
【问题描述】:

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

normpdf(X, u, sigma) 在 MATLAB 中 类似于 normal_distribution gaussian(u, sigma);

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

谢谢。

【问题讨论】:

    标签: c++11 normal-distribution


    【解决方案1】:

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

    【讨论】:

    • 谢谢,很简单。
    • @LocoField 据我所知,标准 C++ 库中没有这样的功能。请检查自己,en.cppreference.com/w
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-10
    • 1970-01-01
    • 1970-01-01
    • 2016-07-07
    • 1970-01-01
    • 2018-08-02
    • 1970-01-01
    相关资源
    最近更新 更多