用matlab拟合一组数据,要求得出函数表达式

数据如下(1.75,0.26),(2.25,0.32)(2.5,0.44)(2.875,0.57)(2.686,0.50)(2.563,0.46)... 数据如下(1.75,0.26),(2.25,0.32)(2.5,0.44)(2.875,0.57)(2.686,0.50)(2.563,0.46) 展开
 我来答
闽帅第五修
2020-04-18 · TA获得超过1133个赞
知道小有建树答主
回答量:1218
采纳率:100%
帮助的人:5.1万
展开全部
这个太难了,或者说是有太多的不确定性
因为连一个大概的函数形式都没有给出来
也就是说可能性太多,这组数据可以拟合出无数多种函数结果
如果什么函数形式都不给出的话,或者用多项式拟合吧
下面是尝试用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)是标准差
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式