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));
}
我必须在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));
}