如何计算高斯拟合的函数均值?

时间:2017-04-15 04:09:38

标签: matlab curve-fitting gaussian

我在MATLAB中使用曲线拟合应用程序。如果我理解正确,左侧框中的“b1”组件是函数的平均值,即xy=50%和我的x数据是[-0.8 -0.7 -0.5 0 0.3 0.5 0.7],那么为什么是这个例子中的这个数字那么大(631)?

一般模型Gauss1:

f(x) =  a1*exp(-((x-b1)/c1)^2)

系数(95%置信区间):

   a1 =  3.862e+258  (-Inf, Inf)

   b1 =       631.2  (-1.117e+06, 1.119e+06)

   c1 =       25.83  (-2.287e+04, 2.292e+04)

1 个答案:

答案 0 :(得分:1)

您的数据看起来像cdf而不是pdf。您可以将此代码用于您的解决方案

xi=[-0.8,-0.7,-0.5, 0.0, 0.3, 0.5, 0.7];
yi= [0.2, 0.0, 0.2, 0.2, 0.5, 1.0, 1.0];
fun=@(v) normcdf(xi,v(1),v(2))-yi;
[v]=lsqnonlin(fun,[1,1]); %[1,2] 
mu=v(1); sigma=v(2);
x=linspace(-1.5,1.5,100);
y=normcdf(x,mu,sigma);
figure(1);clf;plot(xi,yi,'x',x,y);
annotation('textbox',[0.2,0.7,0.1,0.1], 'String',sprintf('mu=%f\nsigma=%f',mu,sigma),'FitBoxToText','on','FontSize',16);

你会得到:mu = 0.24537,sigma = 0.213

如果您仍然想要适合pdf,只需将'fun'(和'y')中的'normcdf'功能更改为'normpdf'。