【发布时间】:2015-04-02 10:23:08
【问题描述】:
我必须在 C++ 环境中开发 normpdf MATLAB 函数。 但是我遇到了问题..
normpdf(X, u, sigma) 在 MATLAB 中 类似于 normal_distribution gaussian(u, sigma);
X 值在哪里? 这意味着我想要高斯函数而不是高斯随机。 如何使用高斯分布对输出值进行采样?
谢谢。
【问题讨论】:
我必须在 C++ 环境中开发 normpdf MATLAB 函数。 但是我遇到了问题..
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));
}
更新
这个可能快一点,少一个乘法
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));
}
【讨论】: