我在MATLAB中使用曲线拟合应用程序。如果我理解正确,左侧框中的“b1”组件是函数的平均值,即x
点y=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)
答案 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'。