matlab曲线拟合详解(含fit、fittype函数及fitoptions设置)

阅读: 评论:0

matlab曲线拟合详解(含fit、fittype函数及fitoptions设置)      在利⽤origin等商业软件对某些复杂的公式进⾏拟合时,常常会出现未知原因的拟合失败。这并不是说明我们的公式本⾝有问题,很有可能是因为商业软件本⾝的算法有问题。这时候就可以应⽤matlab中的曲线拟合功能进⾏拟合。下⾯附上案例代码,为⽅便后⽂叙述,不同部分之间⽤空⾏隔开。
syms t;
x=[50; 200; 400; 600; 800];
y=[0.00000209; 0.00000267; 0.00000825; 0.000748; 0.0216];
f=fittype('C*(1-(0.0005)^(0.00013-0.000000372*t+0.0000000036*t^2))^(n+1)','independent','t','coefficients',{'C','n'});
[cfun,rsquare]=fit(x,y,f,'Lower',[580,1.4],'Upper',[3000000,3],'StartPoint',[600, 1.5]);
xi=0:1:850;
yi=cfun(xi);
plot(x,y,'r*',xi,yi,'b-');
第⼀部分进⾏的操作是定义变量及赋已知点
需要注意的点:
1、⾃变量t要单独定义
2、已知点必须保存为列向量。
3、列向量要⼀ ⼀对应(数据量⼤的时候⼀定要检查⼀下)。
第⼆部分进⾏的操作是定义拟合函数f
这⾥调⽤了fittype函数来进⾏函数的⾃定义。其语法可简述为:
f=fittype('公式具体表达','independent','⾃变量名','coefficients',{'待定参数1','待定参数2'});
ps:有兴趣的⼩伙伴可以在origin中拟合案例代码中的数据和公式,如果拟合成功了,请不吝赐教。
第三部分进⾏的是fitoptions设置,即拟合选项的设置。
昆明旅游攻略景点大全两日游这⾥调⽤了fit函数。其语法可简述为:
西安最新疫情公布
[cfun,函数输出设置]=fit(x,y,f,'函数输⼊设置1',输⼊设置1具体定义,'函数输⼊设置2',输⼊设置2具体定义,...,'函数输⼊设置n',输⼊设置n具体定义)
函数输出设置可选rsquare等,需要注意的是其输出是作为⼀个整体输出的。⼀般写rsquare,诸如sse、rsquare、dfe、adjusted rsquare、rmse都会给出。所以建议只写rsquare即可。
函数输⼊设置可选较多,这⾥只给常⽤的⼏个参数设定:
1、lower:拟合参数下界限,和参数⼀ ⼀对应,案例中'Lower',[580,1.4]即表⽰拟合过程中参数C取值不⼩于580,参数n取值不⼩于1.4。
2、upper:拟合参数上界限,和参数⼀ ⼀对应,案例中'Upper',[3000000,3]即表⽰拟合过程中参数C取值不⼤于3000000,参数n 取值不⼤于3。
3、StartPoint:拟合参数初始值,和参数⼀ ⼀对应,案例中'StartPoint',[600,1.5]即表⽰拟合开始时参数C取值为600,参数n取值为1.5。
需要注意的⼀点是上述参数不知道的情况下可全部删去。但拟合结果会出现以下语句,其⼤意为计算过程中参数初值由系统随机选定,这将导致拟合结果不可靠。在不知道参数上下界范围的时候,建议删去所有输⼊设置,多次试算以确定参数⼤致范围。
警告: Start point not provided, choosing random start point.
> In curvefit.attention.Warning/throw (line 30)
In fit>iFit (line 299)
In fit (line 108)
cfun =
General model:
cfun(t) = C*(1-(0.0005)^(0.00013-0.000000372*t+0.0000000036*t^2))^(n+1)
Coefficients (with 95% confidence bounds):
C =      589.8  (-6265, 7445)
n =      1.488  (-1.303, 4.279)
rsquare =
包含以下字段的 struct:
sse: 1.9441e-05
rsquare: 0.9470
dfe: 3
adjrsquare: 0.9294
rmse: 0.0025
第四部分进⾏的是拟合⾃变量范围及间隔设置。
丽江旅游文化学院案例中xi=0:1:850;表⽰绘制0到850之间的拟合曲线,拟合曲线计算间隔为1。(理论上设置间隔越⼩,最后拟合结果越可靠,建议间隔不要超过3000个)
第五部分通过调⽤plot函数绘制拟合图像,可⾃⾏搜索matlab plot函数⽤法,这⾥不做过多解释。
最后结果如下:
cfun =
General model:
cfun(t) = C*(1-(0.0005)^(0.00013-0.000000372*t+0.0000000036*t^2))^(n+1)
Coefficients (with 95% confidence bounds):
C =        2152  (-2.326e+04, 2.756e+04)
n =      1.805  (-1.038, 4.647)
长沙动物园门票多少钱>宏村旅游攻略一日游
rsquare =
包含以下字段的 struct:克罗地亚vs巴西直播
sse: 1.3311e-05
rsquare: 0.9637
dfe: 3
adjrsquare: 0.9517
rmse: 0.0021

本文发布于:2023-05-26 12:16:48,感谢您对本站的认可!

本文链接:http://www.035400.com/whly/1/436995.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:拟合   参数   设置   函数   旅游   定义   案例
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2024-2030 Comsenz Inc.Powered by © 文化旅游网 滇ICP备2022007236号-403 联系QQ:1103060800网站地图