Matlab实现最小二乘法准则拟合
2018-01-26 20:23
495 查看
数据拟合:
问题的提法:
已知曲线上n个点(xi,yi), (i=1,2,…,n), xi互不相同,寻求一个函数y=F(x), 使y=F(x)在某种准则下与所有数据点最为接近,即曲线拟合得最好。
基本思路是:
设
是m+1个线性无关的连续函数,称为基本拟合函数,取
,
为待定系数,
m <n ,拟合准则是:
(最小二乘法)
按此方法得到的函数
称为数据集(xi,yi), i=1,2,…,n的最小二乘拟合函数。衡量拟合情况优劣的量之一
是:
其中
R2的值可作为拟合质量的指标。
若它接近1,表示F(x)能较好的拟合该数据集。
若取:
即用m次多项式拟合给定数据,称多项式拟合。
Matlab中的多项式拟合函数:polyfit
格式:a=polyfit(x,y,n)
功能:对一组点(x,y)进行n次多项式拟合。
x,y为要拟合的数据, n为拟合多项式的次数,
a为拟合多项式
系数,
,拟合多项式在x处的值可用polyval(a,x)计算。可结合polytool(x,y,n)处理多项式拟合问题。
例4.1 某通信公司在一次施工中,需要在一段水面宽
20米的河底沿直线走向铺设一条河底光缆,A点表示
光缆入水处,B点表示光缆出水处,C、D点表示河底的光缆的两个触底点,在铺设前对河底地形做了测量,测得一组等分点位置xi处的水深hi,x0位于点A处,x20位于点B处,数据如表(单位:米)试估算通过这条河沟所需光缆长度的近似值。
给出一段代码:
解释下里面的几个函数:
问题的提法:
已知曲线上n个点(xi,yi), (i=1,2,…,n), xi互不相同,寻求一个函数y=F(x), 使y=F(x)在某种准则下与所有数据点最为接近,即曲线拟合得最好。
基本思路是:
设
是m+1个线性无关的连续函数,称为基本拟合函数,取
,
为待定系数,
m <n ,拟合准则是:
(最小二乘法)
按此方法得到的函数
称为数据集(xi,yi), i=1,2,…,n的最小二乘拟合函数。衡量拟合情况优劣的量之一
是:
其中
R2的值可作为拟合质量的指标。
若它接近1,表示F(x)能较好的拟合该数据集。
若取:
即用m次多项式拟合给定数据,称多项式拟合。
Matlab中的多项式拟合函数:polyfit
格式:a=polyfit(x,y,n)
功能:对一组点(x,y)进行n次多项式拟合。
x,y为要拟合的数据, n为拟合多项式的次数,
a为拟合多项式
系数,
,拟合多项式在x处的值可用polyval(a,x)计算。可结合polytool(x,y,n)处理多项式拟合问题。
例4.1 某通信公司在一次施工中,需要在一段水面宽
20米的河底沿直线走向铺设一条河底光缆,A点表示
光缆入水处,B点表示光缆出水处,C、D点表示河底的光缆的两个触底点,在铺设前对河底地形做了测量,测得一组等分点位置xi处的水深hi,x0位于点A处,x20位于点B处,数据如表(单位:米)试估算通过这条河沟所需光缆长度的近似值。
给出一段代码:
x=0:1:20; y=[-9.2,-8.91,-8.02,-7.95,-8.11,-9.05,-10.12,-11.08,-12.25,-13.26,-13.45,-12.62,-11.28,-10.23,-9.25,-7.91,-8.05,-8.86,-9.85,-10.81,-10.96]; polytool(x,y,3) n=input('拟合次数n=') format long p=polyfit(x,y,n) %代表拟合n次多元方程 dp=polyder(p) %积分 x1=0:0.01:20; y1=sqrt(1+polyval(dp,x1).^2); %代表系数是dp,横坐标x1,他的纵坐标 s=trapz(x1,y1)-y(1)-y(end)答案:光缆总长:46.28m
解释下里面的几个函数:
polyder % matlab提供了polyder函数多项式的微分。 % 命令格式: % polyder(p): 求p的微分 % polyder(a,b): 求多项式a,b乘积的微分 % [p,q]=polyder(a,b): 求多项式a,b商的微分
>>polytool(x,y,n) n是你想最高次拟合为多少,如果是5,就输入>>polytool(x,y,5) 得到的是一个含有偏差的拟合效果图,其中图形中的degree代表可以改变拟合次数
trapz : 采用梯形法求积分,其实就是模拟牛顿解释积分的过程,一般给一堆点来求
相关文章推荐
- 最小二乘法(c语言实现线性,matlab进行拟合)及相关系数的求解
- VC中实现最小二乘法 直线拟合 Y=a0+a1X 以及 Y=aX
- 学习大数据第三天:最小二乘法的MATLAB实现
- 最小二乘曲线拟合matlab实现
- C++实现最小二乘法对y=exp(x)的二次拟合
- 使用scipy实现最小二乘法,以及通过曲线对数据进行拟合(Python)
- 最小二乘曲线拟合matlab实现
- 最小二乘椭圆拟合matlab代码实现
- 最小二乘法 多项式曲线拟合 原理公式理解 Python 实现
- 简单好用的最小二乘椭圆拟合算法---MATLAB实现
- 直线拟合之最小二乘法 Ax+By+C=0
- 最小二乘法拟合非线性函数及其Matlab/Excel 实现(转)
- 利用MATLAB理解最小二乘法
- 用C语言实现最小二乘法算法
- 大矩阵的分块乘法及matlab实现
- 最小二乘法的一般形式和矩阵形式原理推导和代码实现
- Matlab实现插值与拟合
- 数值分析 反幂法求矩阵按模最小特征值 MATLAB实现
- Matlab直线最小二乘拟合实现
- 最小二乘曲线拟合算法的C++实现