【发布时间】:2013-11-24 00:30:43
【问题描述】:
我使用此链接中给出的方程应用了正态分布函数: http://en.wikipedia.org/wiki/Normal_distribution
我为正态分布编写了这段代码
float m=2.0;
float s=0.5;
float x[3]={1.0, 2.0, 3.0};
float xs[3];
const float pi = 3.141;
for (int i=0; i<3; i++)
{
xs[i]=(1/s*sqrt(2*pi))*exp(-(pow(x[i]-m,2)/2*pow(s,2)));
printf("\n%f",xs[i]);
}
此代码的答案是 4.42、5.01、4.42
我在 Matlab 中有相同的代码
x_s_new=[1 2 3];
x_s=2+0.5.*randn(1,9);
x_s=x_s_new+0.5.*randn(1,3);
plot(x_s_new)
但是 matlab 中的答案是 0.8 , 1.9 , 3.7
谁能告诉我哪里出错了?
我想使用 C 应用正态分布
谢谢:)
【问题讨论】:
-
pi 近似值可能会更好....使用 math.h 中的值
-
randn不是正态分布的 CDF 或 PDF,它是一个随机数生成器!检查normpdf和normcdf -
开始转换代码之前。你应该清理你的matlab代码。
x_s=2+0.5.*randn(1,9);的目的是什么?