zoukankan      html  css  js  c++  java
  • [ZZ] MATLAB曲线拟合

    MATLAB曲线拟合

    http://blog.sina.com.cn/s/blog_5db2286f0100enlo.html

    MATLAB软件提供了基本的曲线拟合函数的命令:

    多项式函数拟合:  a = polyfit(xdata,ydata,n)

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

    多项式在x处的值y可用下面程序计算。

    y = polyval (a, x)

    一般的曲线拟合:  p = curvefit(‘Fun’,p0,xdata,ydata)

    其中Fun表示函数Fun (p, xdata)的M-文件,p0表示函数的初值。curvefit命令的求解问题形式是:

    min{p}  sum {(Fun (p, xdata)-ydata).^2}

    若要求解点x处的函数值可用程序f = Fun(p, x) 计算。

    例如已知函数形式 y = abx + c– dx ,并且已知数据点(xi, yi), i = 1,2,…, n,要确定四个未知参数a, b, c, d

    使用curvefit命令,数据输入xdata = [x1,x2, …, xn]; ydata = [y1,y2, …, yn];初值输入p0 = [a0,b0,c0,d0]; 并且建立函数y = abx + c– dx的M-文件(Fun.m)。若定义p1 = a, p2 = b, p3 = c, p4d , 则输出p = [p1, p2, p3, p4]。

    引例求解:

        t=[1:16];  %数据输入

        y=[4 6.4 8 8.4 9.28 9.5 9.7 9.86 10 10.2 10.32 10.42 10.5 10.55 10.58 10.6];

        plot(t,y,'o')  %画散点图

        p=polyfit(t,y,2)  (二次多项式拟合)

    计算结果:

        p =  -0.0445    1.0711    4.3252   %二次多项式的系数

    从而得到某化合物的浓度y与时间t的拟合函数:

    y = 4.3252+1.0711t  0.0445t2

    对函数的精度如何检测呢?仍然以图形来检测,将散点与拟合曲线画在一个画面上。参见图2。

        xi=linspace(0,16,160);

        yi=polyval(p,xi);

        plot(x,y,'o',xi,yi)

    由此看出上述曲线拟合是比较吻合的。

    <![endif]>  

     

     

        在MATLAB的NAG Foundation Toolbox中也有一些曲面拟合函数,如e02daf,e02cf,e02def可分别求出矩形网格点数据、散点数据的最小平方误差双三次样条曲面拟合,e02def等可求出曲面拟合的函数值。

  • 相关阅读:
    Python字符串
    MySQL触发器
    MySQL 1418报错解决办法
    数据库下载
    补码与反码
    二、八、十六进制之间的转换
    this 指向
    作用域 var 词法分析 arguments
    事件绑定的3种方式
    清浮动方法小结
  • 原文地址:https://www.cnblogs.com/xfzhang/p/7261175.html
Copyright © 2011-2022 走看看