matlab曲线拟合详解(含fit、fittype函数及fitoptions设置) 您所在的位置:网站首页 fit值计算 matlab曲线拟合详解(含fit、fittype函数及fitoptions设置)

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

2023-10-12 00:59| 来源: 网络整理| 查看: 265

       在利用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: sse: 1.3311e-05 rsquare: 0.9637 dfe: 3 adjrsquare: 0.9517 rmse: 0.0021

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有