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

Matlab 专栏收录该内容
18 篇文章 3 订阅

一.拟合所需函数

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

(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人口数据:

x20102011201220132014201520162017201820192020
y3.95.37.29.612.917.123.231.438.650.263.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,'*');

在这里插入图片描述
【2】进行多项式函数拟合(这里可以尝试不同的次数择优选取)

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

在这里插入图片描述

可以看到结果基本吻合

【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年发生了天灾人祸使得前十年的数据严重不符,那么这一阶段的数据就可以舍弃。

曲线拟合作用

预测趋势

总结规律

估算数据

©️2022 CSDN 皮肤主题:终极编程指南 设计师:CSDN官方博客 返回首页

打赏作者

桃陉

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值