Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2009-04-23, 11:40   #1
toumingyouyou
初级会员
 
注册日期: 2008-07-06
年龄: 40
帖子: 11
声望力: 17
toumingyouyou 正向着好的方向发展
默认 回复: [求助]自定义函数数据拟合问题,请求帮助

引用:
作者: slgu 查看帖子
这些数据应该综合配成一条曲线,而不是6条类似但有差别的曲线,这样的数据用这个过于简单的指数函数也不很恰当,可能的function似为:
fx(b,x)=b(1)*exp(b(2)*x+b(3)*x.^2-b(4)*x.^3)+b(5)*x.^b(6);
b=[.11166829e-7, 47.545837, -30.197572, -4.3593343, 8.3529715, -2.1324923]
RSS =102897.7425
MSe = 751.0784
R^2 = 0.79183
该模型仍较简单,并仍具有较大的离回归平方和(RSS)。而这较大的离回归主要来自于x=.2对应的y数据,建议研究者对x接近于0的数据重新测定,再按此模型进行拟合,可能有较好效果。例如,将最后一组y(1)=93.843改成393.843,则:
SSy = 6.2853e+005
b=[ .16254754e-6, 41.863528, -26.642674, -3.8476032, 6.8495811, -2.3654914]
RSS =79161.26051
MSe = 577.81944
R^2 = 0.87412
拟合会好很多!
您好 回复下楼上的问题吧 谢谢啦
toumingyouyou 当前离线   回复时引用此帖
旧 2009-04-24, 00:30   #2
slgu
高级会员
 
注册日期: 2007-06-24
年龄: 70
帖子: 188
声望力: 21
slgu 正向着好的方向发展
默认 回复: [求助]自定义函数数据拟合问题,请求帮助

用模型:fx=@(b,x)b(1)*x.^b(2).*exp(-b(3)*x);
b=[8.4601097, -2.1449757, -0.40722326]
SSy = 4.7982e+005
RSS = 76312.10765
MSe = 657.86
R^2 = 0.84096

我建议您用模型:fx=@(b,x)b(1)*exp(b(2)*x+b(3)*x.^2)+b(4)*x.^b(5);
b=[0.000011922916, 28.889156, -14.105302, 7.4089767, -2.2812403]
SSy = 4.7982e+005
RSS =70060.17726
MSe = 614.56
R^2 = 0.85399
结果较好。


附小程序:
clear,clc
x=0.2:0.2:4.8;
y=[ 455.229 52.765 35.212 40.566 45.549 26.638 7.783 9.97 5.051 4.171 3.681 0.501 0 0 0 0 0 0 0 0 0 0 0 0
407.451 84.16 17.786 26.998 43.44 39.725 15.89 8.549 6.81 6.118 2.169 0.919 0.441 0 0 0 0 0 0 0 0 0 0 0
220.457 64.813 28.326 31.582 43.862 29.885 8.756 6.486 3.541 7.392 1.687 0.23 0.441 0 0 0 0 0 0 0 0 0 0 0
188.963 50.099 31.619 26.381 36.226 12.43 6.145 4.282 1.892 2.254 0 0.29 0.279 0 0.131 0 0 0 0 0 0 0 0 0
184.464 48.644 10.163 14.263 28.438 11.246 10.007 2.864 2.802 1.748 0.551 0.263 0.126 0 0.118 0 0 0 0 0 0 0 0 0];
x=[x; x; x; x; x];x1=0.15:.05:4.85;
x= x( : );
y= y( : );
plot(x,y,'o','markerfacecolor','b')
fx1=@(b,x)b(1)*x.^b(2).*exp(-b(3)*x);
b=[8.4601097, -2.1449757, -0.40722326];
y1=fx1(b,x1);
hold on
plot(x1,y1,'r-','linewidth',2)
fx2=@(b,x)b(1)*exp(b(2)*x+b(3)*x.^2)+b(4)*x.^b(5);
b=[0.000011922916, 28.889156, -14.105302, 7.4089767, -2.2812403];
y2=fx2(b,x1);
plot(x1,y2,'k-','linewidth',2)
legend('','fx1','fx2')
axis tight
slgu 当前离线   回复时引用此帖
旧 2009-05-04, 09:50   #3
toumingyouyou
初级会员
 
注册日期: 2008-07-06
年龄: 40
帖子: 11
声望力: 17
toumingyouyou 正向着好的方向发展
默认 回复: [求助]自定义函数数据拟合问题,请求帮助

楼上的不是我想要的 不过还是谢谢你了啊
自己已经作出来了~~
toumingyouyou 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码


相似的主题
主题 主题作者 版面 回复 最后发表
[资料] lbc898 MATLAB论坛 0 2009-03-16 18:52
[求助]请问这种图怎么画 yape14 MATLAB论坛 4 2008-09-22 09:04
[求助]在SIMULINK里,如何将inegrator上方的箭头移到下面去 yijianmei MATLAB论坛 1 2008-07-24 10:15
仪表信息图像采集处理研究 liuna2008 MATLAB论坛 0 2008-04-12 18:53
Simplify Instrument Communication: Using Instrument Drivers with the Instrument Contr TechnicalArticles MATLAB技术文章 0 2008-01-06 16:32


所有时间均为北京时间。现在的时间是 18:24


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.