zoukankan      html  css  js  c++  java
  • MATLAB学习多项式拟合(1)

    (1)polyfit函数

    MATLAB的polyfit函数用于多项式拟合,其语法为:

    p = polyfit(x, y, k);

    其中,x,y分别是横纵坐标向量,它们不仅元素个数相同,而且同为行向量或同为列向量。k为非负整数,是待拟合的多项式的最高次数。p是输出项,为待拟合的多项式的系数向量(由高次到低次排列)。

    例子:

    在MATLAB的命令窗口输入以下代码:

    >> x = [1, 2, 3, 4];
    >> y = [3, 5, 7, 9];
    >> p = polyfit(x, y, 1)

    敲击回车键,得到输出结果:

    p =

        2.0000    1.0000

    所以拟合得的函数就是:y = 2.0000X + 1.0000.

    在进行多项式拟合时,必须注意的是,拟合的精度是有限的,一般而言,需要满足以下条件:

    记m为不重复的横坐标的数目,则拟合次数k <= m - 1,在此前提下尽量使用低次多项式进行拟合。

    (2)polyval函数

    polyval,顾名思义就是“多项式的值”,该函数的功能是将已知数据代入拟合得的多项式求值。语法格式:

    y = polyval(p, x);

    其中,p是已经拟合的多项式(比如说(1)中的p),x是自变量组成的向量,y是所求值组成的向量。

    例子:

    在命令窗口输入以下代码:

    >> clear
    >> x = [1, 2, 3];
    >> y = [3, 5, 7];
    >> p = polyfit(x, y, 1); %得到拟合多项式:y = 2*x + 1
    >> t = [1, 2, 3, 4, 5];
    >> s = polyval(p, t)

    得到结果:

    s =

        3.0000    5.0000    7.0000    9.0000   11.0000


    (3)计算多项式拟合的方差

    已知原始数据x和y,拟合得到多项式p,判断拟合效果好坏的一个重要指标是方差,方差的计算方法是

    e = sum((y - polyval(p, x)).^2).

    polyval(p, x)得到拟合值向量,y是真实值向量,两者相减得到真实值和拟合值的差值向量,“.^2”表示对矩阵中的每一个元素进行平方运算,于是得到差值向量中每一个元素的平方,sum是求和函数,显然就是求差值向量元素的平方和,而这就是方差。

    例子:

    编写代码求多项式:

    >> x = [1, 2, 3, 4];
    >> y = [4, 5, 6, 7];
    >> p = polyfit(x, y, 1)

    得到

    p =

        1.0000    3.0000

    于是拟合的多项式为:y = 1.0000x + 3.0000

    编写代码求方差:

    >> e = sum((y - polyval(p, x)).^2)

    得到方差:

    e =

      3.1554e-030

    可见,方差≈0.表明拟合效果很好。

  • 相关阅读:
    linux 进入 GNOME X 界面
    POJ 3436 ACM Computer Factory (拆点+最大流)
    学习:EF(Entity Framwork)结构【转】
    .net上传Excel,解析Excel,导出CSV
    在Handler里面使用Session
    如何用JavaScript判断访问的来源是电脑还是手机,是什么浏览器?
    ASP.NET List泛型分页代码 【转】
    ASP.NET MVC中实现多个按钮提交的几种方法【转】
    清空数据库所有表,所有存储过程SQL语句
    可以不被浏览器拦截的弹出窗口
  • 原文地址:https://www.cnblogs.com/cszlg/p/2671454.html
Copyright © 2011-2022 走看看