一元多项式的数据拟合-----polyfit

1. 调用格式:​

a. p=polyfit(x,y,n)​​​

b.  [p,S] = polyfit(x,y,n)​

c.  [p,S,mu]=polyfit(x,y,n)

​2. 参数意义

​x : 源数据点对应的横坐标,可为行向量、矩阵

y : 源数据点对应的纵坐标,可为行向量、矩阵

n : 要拟合的阶数,k阶拟合需要确定k+1个未知参数,故而至少需要k+1对点(x,y)。​

p : 拟合多项式 的系数(共n+1个)

S :​ S是一个结构体数组(struct),用来估计预测误差,包含了R,df和normr。 

R:polyfit函数中,先根据输入的x构建范德蒙矩阵V,然后进行QR分解,得到的上三角矩阵(系数矩阵的QR分解的上三角阵)。 

df:自由度, df=length(y)-(n+1)。df>0时,为超定方程组的求解,即拟合点数比未知数(p(1)~p(n+1))多。 

normr:[ 拟合误差平方和的算术平方根=sqrt(sum((ya-yb).^2)) ] 、标准偏差、残差范数,normr=norm(y-V*p),此处的p为求解之后的数值。残差是多大的数才算拟合效果好其实并不能确定。只有相关系数(-1,1)才能确定拟合的好坏,越接近1(或-1),表示拟合的效果较好,一般来说在0.95以上可以认为基本拟合。

r=corrcoef(ya,yb)对角线上是自相关,所以是1,剩下两个变量分别是ya与yb的相关和yb与ya的相关。min(min(corrcoef(ya, yb))) 就是ya,yb之间的相关系数。

mu: x的估计量 XHAT = (X-MU(1))/MU(2) where MU(1) = MEAN(X) and MU(2) = STD(X)​把X根据公式XHAT = (X-mu(1))/mu(2)做了一下中心及比例变换,用XHAT和Y进行N阶拟合,所以结果会不一样。是说这样做能同时提高多项式和拟合算法的数值特性。

​3. 基本用法

​示例​

数据​​​

x = 1:10;

y = [1 5 10 3 6 32 52 6 15 60];

代码​​​

clear;

clc;

x = 1:10;

y = [1 5 10 3 6 32 52 6 15 60];

[p,s] = polyfit(x,y,6)

xi = linspace(1,10,100);

yb=polyval(p,x);

yi=polyval(p,xi);

plot(x,y,'b-',xi,yi,'r-');

legend('原始数据','拟合曲线');

corrco = min(min(corrcoef(y,yb))); %相关系数可用来衡量拟合效果

co_err = [corrco,s.normr]

结果​​​

 

p =

    0.0103   -0.2254    1.3680    0.7959  -29.4813   78.0417  -50.4333

s =

        R: [7x7 double]       df: 3    normr: 26.8533

co_err =

    0.9090   26.8533

 

 

4. ​相关函数

​利用polyval函数求出拟合曲线在x处的预测值。​

y = polyval(p,x)

[y,delta] = polyval(p,x,S)

y = polyval(p,x,[],mu)

[y,delta] = polyval(p,x,S,mu)​​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值