• 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.表明拟合效果很好。

  • 相关阅读:
    Laravel 中使用 Redis 数据库
    PHP 安装 phpredis 扩展(二)
    Redis 安装(一)
    macOS 中使用 phpize 动态添加 PHP 扩展的错误解决方法
    macOS 中的 Rootless 机制
    Homebrew
    macOS 下配置 MAMP 开发环境(Mac + Apache + Mysql + PHP)
    常系数齐次线性递推
    任意模数FFT
    猫树总结
  • 原文地址:https://www.cnblogs.com/cszlg/p/2671454.html
Copyright © 2020-2023  润新知