关于用MATLAB拟合一组数据,得到函数的表达式

我的数据是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,... 我的数据是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]

请问具体怎么得到x与y的函数关系,在MATLAB上的具体操作步骤。或者不用MATLAB也可以,只要能得到他们的关系,请问有大神知道吗?
展开
 我来答
dukinkin
推荐于2017-12-15 · TA获得超过1.3万个赞
知道大有可为答主
回答量:2444
采纳率:90%
帮助的人:885万
展开全部

这个太难了,或者说是有太多的不确定性

因为连一个大概的函数形式都没有给出来

也就是说可能性太多,这组数据可以拟合出无数多种函数结果


如果什么函数形式都不给出的话,或者用多项式拟合吧


下面是尝试用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)是标准差

thu_yang
2014-07-28 · TA获得超过223个赞
知道小有建树答主
回答量:120
采纳率:0%
帮助的人:152万
展开全部
如果没有模型的话只能画出图来看它像什么。。。要不就一个个模型去试验
追问
我看到他像一个正态分布,然后怎么做呢?
追答
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就是三个系数值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式