ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:19.71KB ,
资源ID:23235182      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23235182.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(matlab曲线拟合.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

matlab曲线拟合.docx

1、matlab曲线拟合函数插值与曲线拟合1、函数插值 一维插值:interp1(x,y,cx,method) 一维插值:interp1(x,y,z,cx,cy,method)method:nearest、linear、spline、cubic例:clearecho onx=-2:0.4:2;y=2.8 2.96 2.54 3.44 3.565.46.0 8.7 10.1 13.3 14.0;t=-2:0.01:2;nst=interp1(x,y,t,nearest);plot(x,y,r*,t,nst)title(最临近点插值)lnr=interp1(x,y,t,linear);figure(2

2、) plot(x,y,r*,t,lnr,b:)title(线性插值)spl=interp1(x,y,t,spline);figure(3)plot(x,y,r*,t,spl)title(样条插值)cbc=interp1(x,y,t,cubic);figure(4)plot(x,y,r*,t,cbc,k-)title(三次插值)2、曲线拟合多项式拟合:polyfit(x,y,m) 线性:m=1,二次:m=2, 例:x=0:0.1:1;y=-0.447 1.978 3.28 6.16 7.08 7.347.66 9.56 9.48 9.30 11.2;A=polyfit(x,y,2)Z=polyv

3、al(A,x);Plot(x,y,r*,x,z,b)matalb 曲线拟合的问题%多项式拟合函数polyfit示例x=0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1;y=-0.4471 0.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2;n=2;%polynomial orderp=polyfit(x, y, n);%polyfit 的输出是一个多项式系数的行向量。%其解是y = 9.8108x220.1293x0.0317。为了将曲线拟合解与数据点比较,让我们把二者都绘成图。xi=linspace(0, 1,

4、100);%x-axis data for plottingz=polyval(p, xi);%polyval 求多项式值plot(x, y, o , x, y, xi, z, : )xlabel(x)ylabel(y=f(x)title(Second Order Curve Fitting)/最小二乘法曲线拟合typedef CArrayCDoubleArray;BOOL CalculateCurveParameter(CDoubleArray *X,CDoubleArray *Y,long M,long N,CDoubleArray *A) /X,Y - X,Y两轴的坐标 /M - 结果变

5、量组数 /N - 采样数目 /A - 结果参数 register long i,j,k; double Z,D1,D2,C,P,G,Q; CDoubleArray B,T,S; B.SetSize(N); T.SetSize(N); S.SetSize(N); if(MN)M=N; for(i=0;iM;i+) (*A)i=0; Z=0; B0=1; D1=N; P=0; C=0; for(i=0;i1) T1=1; T0=-P; D2=0; C=0; G=0; for(i=0;iN;i+) Q=(*X)i-Z-P; D2=D2+Q*Q; C=(*Y)i*Q+C; G=(*X)i-Z)*Q*Q

6、+G; C=C/D2; P=G/D2; Q=D2/D1; D1=D2; (*A)1=C*T1; (*A)0=C*T0+(*A)0; for(j=2;j=3) for(k=j-2;k=1;k-) Sk=-P*Tk+Tk-1-Q*Bk; S0=-P*T0-Q*B0; D2=0; C=0; G=0; for(i=0;i=0;k-) Q=Q*(*X)i-Z)+Sk; D2=D2+Q*Q; C=(*Y)i*Q+C; G=(*X)i-Z)*Q*Q+G; C=C/D2; P=G/D2; Q=D2/D1; D1=D2; (*A)j=C*Sj; Tj=Sj; for(k=j-1;k=0;k-) (*A)k=C*

7、Sk+(*A)k; Bk=Tk; Tk=Sk; return TRUE; *%只考虑线性拟合* % *%原始数据 * t = 0 .3 .8 1.1 1.6 2.3; y = 0.5 0.82 1.14 1.25 1.35 1.40; % *%多项式拟合 * p=polyfit(t,y,2) %利用左除 X = ones(size(t) t t.2; a = Xy %regress函数X = ones(size(t) t t.2;b=regress(y,X)%lsqcurvefit函数fun=inline(x(1)*t.2+x(2)*t+x(3),x,t);x=lsqcurvefit(fun,

8、0,0,0,t,y)%Curve Fitting Toolboxfit1= fit(t,y,poly2)%Curve Fitting Toolbox(自定义多项式)mymodel = fittype(a*t2+b*t+c,independent,t);%mymodel = fittype(a*x2+b*x+c);fit1= fit(t,y,mymodel,start,0,0,0)%指数形式的拟合X = ones(size(t) exp(-t) t.*exp(-t);a = Xy%lsqcurvefit函数fun=inline(x(1)+x(2)*exp(-t)+x(3).*t.*exp(-t)

9、,x,t);x=lsqcurvefit(fun,0,0,0,t,y)%Curve Fitting Toolboxmymodel = fittype(a+b*exp(-t)+c*t*exp(-t),independent,t);%mymodel = fittype(a+b*exp(-x)+c*x*exp(-x);fit1= fit(t,y,mymodel,start,0,0,0)%不含常数项的多项式拟合%利用左除X = t t.2;a = Xy%regress函数X = t t.2;b=regress(y,X)%lsqcurvefit函数fun=inline(x(1)*t.2+x(2)*t,x,

10、t);x=lsqcurvefit(fun,0,0,t,y)%Curve Fitting Toolboxmymodel = fittype(a*t2+b*t,independent,t);%mymodel = fittype(a*x2+b*x);fit1= fit(t,y,mymodel,start,0,0) MATLAB软件提供了基本的曲线拟合函数的命令多项式函数拟合:a=polyfit(xdata,ydata,n)其中n表示多项式的最高阶数,xdata,ydata为将要拟合的数据,它是用数组的方式输入输出参数a为拟合多项式y=a1xn+.+anx+an+1的系数 多项式在x处的值y可用下面程

11、序计算 y=polyval(a,x,m) 线性:m=1,二次:m=2, polyfit的输出是一个多项式系数的行向量。为了计算在xi数据点的多项式值,调用MATLAB的函数polyval。例:x=0:0.1:1;y=-0.447 1.978 3.28 6.16 7.087.34 7.66 9.56 9.48 9.30 11.2;A=polyfit(x,y,2)Z=polyval(A,x);Plot(x,y,r*,x,z,b) 一般的曲线拟合:p=curvefit(Fun,p0,xdata,ydata)其中Fun表示函数Fun(p,data)的M函数文件,p0表示函数的初值curvefit()命

12、令的求解问题形式是最小二乘解若要求解点x处的函数值可用程序f=Fun(p,x)计算2、函数插值 一维插值:interp1(x,y,cx,method) 一维插值:interp1(x,y,z,cx,cy,method)method:nearest、linear、spline、cubic例:clearecho onx=-2:0.4:2;y=2.8 2.96 2.54 3.44 3.565.46.0 8.7 10.1 13.314.0;t=-2:0.01:2;nst=interp1(x,y,t,nearest);plot(x,y,r*,t,nst)title(最临近点插值)lnr=interp1(x

13、,y,t,linear);figure(2) plot(x,y,r*,t,lnr,b:)title(线性插值)spl=interp1(x,y,t,spline);figure(3)plot(x,y,r*,t,spl)title(样条插值)cbc=interp1(x,y,t,cubic);figure(4)plot(x,y,r*,t,cbc,k-)title(三次插值)3 二维插值二维插值是基于与一维插值同样的基本思想。然而,正如名字所隐含的,二维插值是对两变量的函数z=f(x,y)进行插值。interp2的基本形式是interp2(x,y, z, xi, yi,method)。这里x和y是两个

14、独立变量,z是一个应变量矩阵。x和y对z的关系是z(i, :) = f(x, y(i)和z(:, j) =f(x(j), y).也就是,当x变化时,z的第i行与y的第i个元素y(i)相关,当y变化时,z的第j列与x的第j个元素x(j)相关,。xi是沿x-轴插值的一个数值数组;yi是沿y-轴插值的一个数值数组。可选的参数method可以是linear,cubic或nearest。在这种情况下,cubic不意味着3次样条,而是使用3次多项式的另一种算法。linear方法是线性插值,仅用作连接图上数据点。nearest方法只选择最接近各估计点的粗略数据点。在所有的情况下,假定独立变量x和y是线性间隔

15、和单调的。已知观察数据如下表所示,按下属方案求最小二乘拟合函数,并求出偏差平方和,比较拟合曲线的优劣。 x:0 0.2 0.6 1.0 1.3 1.6 1.7 1.8 1.9 2.2 2.3 2.5 2.6 y:0 -2.5 -4.0 -5.7 -3.5 -2.0 -1.0 2.0 3.5 4.0 7.0 7.5 9.9 x:2.9 3.1 3.4 3.8 4.1 4.4 4.7 4.8 4.9 5.0 5.1 5.3 y:10.9 11.9 13.5 13.0 11.9 9.0 6.5 4.0 1.5 0.0 -2.5 -5.0 %用离散正交多项式求三次拟合多项式% x,y-表示原始数据的节

16、点坐标% w-表示权重系数% N-表示要拟合的离散正交多项式的最高次数% polyapproximate()-是自定义函数,可以求解多项式的系数% 其返回值c为多项式系数,error为偏差平方和x=0 0.2 0.6 1.0 1.3 1.6 1.7 1.8 1.9 2.2 2.3 2.5 2.6 2.9 3.1 3.4 3.8 4.1 4.4 4.7 4.8 4.9 5.0 5.1 5.3;nn=length(x);for i=1:nn w(i)=1;endy=0 -2.5 -4.0 -5.7 -3.5 -2.0 -1.0 2.0 3.5 4.0 7.0 7.5 9.9 10.9 11.9 1

17、3.5 13.0 11.9 9.0 6.5 4.0 1.5 0.0 -2.5 -5.0;N=3;%此处可取3 or 4.c,error=polyapproximate(x,y,w,N)t=0:0.1:5.3;u=polyval(c,t);plot(t,u,x,y,+) %自定义函数polyapproximate(),用来做离散正交多项式拟合% 此函数的作用是做不同次数的离散正交多项式的拟合% X,Y 为原始数据的坐标值矩阵% w 为权重系数% N 为离散正交多项式的最高次数function C,E=polyapproximate(X,Y,w,N)M=length(X);for i=1:N+1

18、for j=1:i if j=i P(i,j)=0; else P(i,j)=1; end endendS=0;d(1)=0;for i=1:M d(1)=d(1)+w(i); S=S+w(i)*X(i);endAF(1)=S/d(1);P(2,1)=-AF(1);for i=1:M PX(i,1)=1; PX(i,2)=X(i)-AF(1);endBA(1)=0;for k=2:N+1 S=0; dd=0; for i=1:M S=S+w(i)*X(i)*PX(i,k)*PX(i,k); dd=dd+w(i)*PX(i,k)*PX(i,k); end d(k)=dd; AF(k)=S/d(k

19、); BA(k-1)=d(k)/d(k-1); P(k+1,1)=-AF(k-1)*P(k,1)-BA(k-1)*P(k-1,1); for i=1:k-1 j=k-i+1; if j=k t=0; else t=P(k-1,j); end P(k+1,j)=P(k,j-1)-AF(k-1)*P(k,j)-BA(k-1)*t; end for i=1:M PX(i,k+1)=PX(i,k)*(X(i)-AF(k-1)-BA(k-1)*PX(i,k-1); endendd(N+1)=0;for i=1:M d(N+1)=d(N+1)+w(i)*PX(i,N+1)*PX(i,N+1);endfor

20、 i=1:N+1 FM=0; for k=1:M FM=FM+w(k)*Y(k)*PX(k,i); end gp(i)=FM/d(i);endfor i=1:N+1 C(i)=0; for j=i:N+1 C(i)=C(i)+gp(j)*P(j,i); endendC=flipud(C);%C=CU=0;for i=1:M U=U+w(i)*Y(i)*Y(i);endV=0;for k=1:N+1 V=V+gp(k)*gp(k)*d(k);endE=U-V;拟合预测 拟合预测是建立一个模型去逼近实际数据序列的过程,适用于发展性的体系。建立模型时,通常都要指定一个有明确意义的时间原点和时间单位。

21、而且,当t趋向于无穷大时,模型应当仍然有意义。将拟合预测单独作为一类体系研究,其意义在于强调其唯“象”性。一个预测模型的建立,要尽可能符合实际体系,这是拟合的原则。拟合的程度可以用最小二乘方、最大拟然性、最小绝对偏差来衡量。主要方法有:a、回归预测:主要含自回归、线形回归、同态线形回归和多元回归。b、“s”模型。主要用来拟合生命总量不受直接限制的体系从发生发展直到饱和点这一阶段的形象。c、生命旋回:对一事物从零开始,经过成长、兴盛,达到全盛期后再逐渐衰落,最后又回到零的过程的预测。它适合于总量有限的体系。d、周期拟合模型。当系统的条件未知,而仅对实际发生的周期因素建立的拟合模型。其准确性取决与

22、模型的合理性,并经常为预测结果所验证,属于动态预测模型。插值和拟合都是函数逼近或者数值逼近的重要组成部分.他们的共同点都是通过已知一些离散点集M上的约束,求取一个定义在连续集合S(M包含于S)的未知连续函数,从而达到获取整体规律的目的,即通过窥几斑来达到知全豹。简单的讲,所谓拟合是指已知某函数的若干离散函数值f1,f2,fn,通过调整该函数中若干待定系数f(1, 2,3), 使得该函数与已知点集的差别(最小二乘意义)最小。如果待定函数是线性,就叫线性拟合或者线性回归(主要在统计中),否则叫作非线性拟合或者非线性回归。表达式也可以是分段函数,这种情况下叫作样条拟合。而插值是指已知某函数的在若干离散点上的函数值或者导数信息,通过求解该函数中待定形式的插值函数以及待定系数,使得该函数在给定离散点上满足约束。插值函数又叫作基函数,如果该基函数定义在整个定义域上,叫作全域基,否则叫作分域基。如果约束条件中只有函数值的约束,叫作Lagrange插值,否则叫作Hermite插值。从几何意义上将,拟合是给定了空间中的一些点,找到一个已知形式未知参数的连续曲面来最大限度地逼近这些点;而插值是找到一个(或几个分片光滑的)连续曲面来穿过这些点

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1