发布网友 发布时间:2022-05-05 19:32
共2个回答
热心网友 时间:2022-06-27 23:54
这个太难了,或者说是有太多的不确定性
因为连一个大概的函数形式都没有给出来
也就是说可能性太多,这组数据可以拟合出无数多种函数结果
如果什么函数形式都不给出的话,或者用多项式拟合吧
下面是尝试用11次多项式拟合你的数据
x=[9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39];
y=[9,12,18,21,12,26,29,36,50,101,192,245,233,117,28,9];
p=polyfit(x,y,11);
xx=linspace(9,39,100);
yy=polyval(p,xx);
plot(x,y,'o');hold on
plot(xx,yy,'r');hold off
legend('数据','拟合','location','northwest');
title(poly2str(p,'x'));
如果是正态分布
x=[9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39];
y=[9,12,18,21,12,26,29,36,50,101,192,245,233,117,28,9];
fun=@(p,x) p(1)*exp(-(x-p(2)).^2./2/p(3)^2);
p=nlinfit(x,y,fun,[250 32 10]);
xx=linspace(9,39,100);
yy=fun(p,xx);
plot(x,y,'o');hold on
plot(xx,yy,'r');hold off
legend('数据','拟合','location','northwest');
其中得到的p是有3个数的向量
函数形式是
p(1)*exp(-(x-p(2)).^2./2/p(3)^2)
p(1)是幅度,p(2)是中心横坐标,p(3)是标准差
热心网友 时间:2022-06-27 23:54
如果没有模型的话只能画出图来看它像什么。。。要不就一个个模型去试验追问我看到他像一个正态分布,然后怎么做呢?追答function f = fun(a, x)
b0 = a(1);
b1 = a(2);
b2 = a(3);
f = b0/sqrt(2*pi*b1)*exp(-(x-b2).^2/(2*b1));
定义一个正态分布的函数fun
命令行输入:[beta,r,j] = nlinfit(x,y,@fun,[2 2 2]);
其中beta就是三个系数值