您的位置:首页 > 编程语言 > MATLAB

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处,数据如表(单位:米)试估算通过这条河沟所需光缆长度的近似值。



给出一段代码:

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 : 采用梯形法求积分,其实就是模拟牛顿解释积分的过程,一般给一堆点来求
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: