zoukankan      html  css  js  c++  java
  • Matlab中用fit做曲线拟合

    1.确定要拟合的类型

      一般情况下matlab会直接提供常用的类型,用fittype创建拟合模型。至于matlab具体提供了哪些模型,参见帮助"List of library models for curve and surface fitting"

    ft = fittype( 'gauss1' ); %高斯拟合

      如果库中没有自己想要的拟合形式,可以自己进行定义,此时使用匿名函数是很方便的,格式如下

    ft = fittype(@(a,b,c,x) a*x^3 + b*x^2 +c*x );

      使用自定义拟合形式需要注意几点:

    • 自变量必须是x
    • 参数要放在自变量前面,在上面的例子中,匿名函数参数的形式为(a, b, c, x),便遵循了这一规则

    2.要拟合的数据格式

      在最简单的情况下,即拟合两个向量X,Y,则其必须是列向量

    3.拟合

     使用fit进行拟合

    fitresult= fit( xData, yData, ft);

      其输出fitresult是一个cfit型的对象(object),主要包含两个内容:1,拟合模型,即第一步中确定的拟合类型;2,拟合所得系数的值。例如对第一步中所创建的高斯模型,其fitresult 的值为

    fitresult = 
         General model Gauss1:
         fo(x) =  a1*exp(-((x-b1)/c1)^2)
         Coefficients (with 95% confidence bounds):
           a1 =       45.54  (42.45, 48.64)
           b1 =     0.01011  (0.0101, 0.01012)
           c1 =   0.0002551  (0.0002353, 0.0002748)

      获得了这样一个object,如何把其中的系数提取出来呢?这个要用到coeffvalues函数

    >> coeffvalues(fitresult)
    
    ans =
    
       45.5426    0.0101    0.0003

    4.获取拟合优度

      现在已经获得了拟合系数,那到底拟合得怎么样呢?可以使用下面的格式获取拟合优度

    [fitresult ,gof] = fit(X,Y,'gauss1');

      gof是一个结构体,包含4个量

    sse:Sunm of squares due to error
    rsquare:R-square 这个就是线性回归里的那个R2,与线性回归里的具有同样的意义
    dfe:Degrees of freedom in the error,不懂
    adjrsquare: 也不懂
    rmse: 误差的均方根值(rms)

      暂时只需要用到这些,更高级的要用的时候再说。

  • 相关阅读:
    jsp_Scriptlet
    jsp_注释
    Http状态码详解
    Tomcat服务器的安装和配置
    【BZOJ 1018】线段树 **
    【BZOJ 2054】 2054: 疯狂的馒头 (并查集特技)
    【BZOJ 1969】 1969: [Ahoi2005]LANE 航线规划 (树链剖分+线段树)
    【BZOJ 1880】 [Sdoi2009]Elaxia的路线 (最短路树)
    【UOJ 79】 一般图最大匹配 (✿带花树开花)
    【UOJ 34】 多项式乘法 (FFT)
  • 原文地址:https://www.cnblogs.com/CherryWull/p/5574277.html
Copyright © 2011-2022 走看看