曲线拟合(多项式函数+MATLAB实例)

目录

    • 一.拟合所需函数
      • (1)polyfit 函数
      • (2)polyval 函数
    • 二.举例(预测人口)
      • (1)问题数据
      • (2)求解
      • (3)完整代码
      • (4)注意点

一.拟合所需函数

这里我们主要考虑用多项式函数去进行曲线拟合

(1)polyfit 函数

功能: 求得结果为最小二乘法拟合的多项式系数。

格式:

p = polyfit(X,Y,n);

X,Y为进行拟合的样本数据,类型为矩阵。n为拟合的多项式次数,看散点图判断拟合次数。p为拟合后返回的多项式系数矩阵。

[p,s] = polyfit(X,Y,n);

返回两个结果,s为采样点的误差数据

[p,s,mu] = polyfit(X,Y,n);

返回三个结果,mu是一个二元向量,其中mu(1)是X的平均值即mean(X), mu(2)是X的标准差即std(X)。

(2)polyval 函数

功能: 求得在上面函数所得的p系数下,某一点预测的函数值。

格式:

polyval(p,15);

返回值为X=15时的函数值。

二.举例(预测人口)

(1)问题数据

某地区2010-2020人口数据:

x 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020
y 3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2 63.0

(2)求解

我们先分步求解,后面有完整代码

【1】先查看散点图趋势

x=2010:1:2020;
y=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6, 50.2,63.0];
plot(x,y,'*');

曲线拟合(多项式函数+MATLAB实例)_第1张图片
【2】进行多项式函数拟合(这里可以尝试不同的次数择优选取)

p = polyfit(x,y,2);
plot(x,y,'*',x,polyval(p,x))

曲线拟合(多项式函数+MATLAB实例)_第2张图片

可以看到结果基本吻合

【3】可以继续进行预测未来的人口

polyval(p,2021)
ans =

   74.4776

(3)完整代码

x=2010:1:2020;
y=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6, 50.2,63.0];
p = polyfit(x,y,2);
plot(x,y,'*',x,polyval(p,x))
polyval(p,2021);

(4)注意点

我们在选取数据时,并不是数据越多越好。

在选取数据时,同时要考虑到实际情况,就比如说对人口预测,可能前10年发生了天灾人祸使得前十年的数据严重不符,那么这一阶段的数据就可以舍弃。

曲线拟合作用

预测趋势

总结规律

估算数据

你可能感兴趣的:(Matlab,matlab)