拟合

来源:互联网 发布:节能降温软件 编辑:程序博客网 时间:2024/04/30 13:17

 拟合:用比较简单和合适的函数来逼近(或拟合)实验数据

一 拟合工具箱CFTOOL

用法:对于数据

v=[20,40,60,80,100,120,140];x=[6.5,17.8,33.6,57.1,83.4,118,153.5];plot(v,x);


图形如下:

尝试用工具箱中的立方拟合,得到图形如下:

从图形上看,得到的图形基本和点重合;得到的R方也趋向于1,可见拟合效果很好。

得到结果:

Linear model Poly3:
       f(x) = p1*x^3 + p2*x^2 + p3*x + p4
Coefficients (with 95% confidence bounds):
       p1 = -1.042e-005  (-3.726e-005, 1.643e-005)
       p2 =    0.009065  (0.002565, 0.01557)
       p3 =     0.01298  (-0.4493, 0.4752)
       p4 =         2.9  (-6.263, 12.06)

Goodness of fit:
  SSE: 2.951
  R-square: 0.9998
  Adjusted R-square: 0.9997
  RMSE: 0.9918

 

解释:

SSE:方差
  R-square: 决定系数
  Adjusted R-square: 校正后的决定系数
  RMSE: 标准差

当然,也可以用二次拟合,得到结果:

Linear model Poly2:
       f(x) = p1*x^2 + p2*x + p3
Coefficients (with 95% confidence bounds):
       p1 =    0.006565  (0.005767, 0.007364)
       p2 =      0.1838  (0.05303, 0.3146)
       p3 =        -0.1  (-4.664, 4.464)

Goodness of fit:
  SSE: 4.451
  R-square: 0.9997
  Adjusted R-square: 0.9996
  RMSE: 1.055

 

总体来说,二次拟合已经基本可以反应曲线,但三次拟合精度要高一些,四次以上的拟合已经没有必要了。

另:工具箱中的非线性函数

Custom Equations 用户自定义函数
Expotential e指数函数
Fourier 傅立叶函数,含有三角函数
Gaussian 正态分布函数,高斯函数
Interpolant 插值函数,含有线性函数,移动平均等类型的拟合
Polynomial 多项式函数
Power 幂函数
Sum of sin functions正弦函数类
Weibull 威布尔函数

二 拟合函数

v=[20,40,60,80,100,120,140];x=[6.5,17.8,33.6,57.1,83.4,118,153.5];a=polyfit(v,x,2);xi=polyval(a,v);plot(v,x,'ro',v,xi,'b');

 解释:    

      a=polyfit(xdata,ydata,n)

  其中n表示多项式的最高阶数,xdata,ydata为将要拟合的数据,它是用数组的方式输入.输出参数a为拟合多项式 y=a1xn+...+anx+a n+1的系数

  y=polyval(a,x,m)

       计算多项式在x处的值y

  线性:m=1, 二次:m=2, …

  polyfit的输出是一个多项式系数的行向量。为了计算在xi数据点的多项式值,调用MATLAB的函数polyval。

原创粉丝点击