Matlab最小二乘法曲线拟合_第1页
Matlab最小二乘法曲线拟合_第2页
Matlab最小二乘法曲线拟合_第3页
Matlab最小二乘法曲线拟合_第4页
Matlab最小二乘法曲线拟合_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、最小二乘法在曲线拟合中比较普遍。拟合的模型主要有1 .直线型2 .多项式型3 .分数函数型4 .指数函数型5 .对数线性型6 .高斯函数型一般对于LS问题,通常利用反斜杠运算、fminsearch或优化工具箱提供的极小化函数求解。在Matlab中,曲线拟合工具箱也提供了曲线拟合的图形界面操作。在命令提示符后键入:cftool ,即可根据数据,选择适当的拟合模型。命令1 .假设要拟合的多项式是:y=a+b*x+c*xA2.首先建立设计矩阵 X:X=ones(size(x) x xA2;执行:para=Xypara 中包含了三个参数:para(1)=a;para(2)=b;para(3)=c;这种

2、方法对于系数是线性的模型也适应。2 .假设要才以合:y=a+b*exp(x)+cx*exp(xA2)设计矩阵X为X=ones(size(x) exp(x) x.*exp(x.A2);para=Xy3 .多重回归(乘积回归)设要拟合:y=a+b*x+c*t ,其中x和t是预测变量,y是响应变量。设计矩阵为X=ones(size(x) x t % 注意x,t大小相等!para=Xypolyfit 函数polyfit函数不需要输入设计矩阵,在参数估计中,polyfit会根据输入的数据生成设计矩阵。1 .假设要拟合的多项式是:y=a+b*x+c*xA2p=polyfit(x,y,2)然后可以使用pol

3、yval在t处预测:y_hat=polyval(p,t)polyfit函数可以给出置信区间。p S=polyfit(x,y,2) %S中包含了 标准差y_fit,delta = polyval(p,t,S) %按照拟合模型在 t处预测在每个 t 处的 95%CI 为:*delta, y_fit+*delta)2 .指数模型也适应假设要才以合:y = a+b*exp(x)+c*exp(x.2)p=polyfit(x,log(y),2)fminsearch 函数fminsearch是优化工具箱的极小化函数。LS问题的基本思想就是残差的平方和(一种范数,由此,LS产生了许多应用)最小,因此可以利用f

4、minsearch函数进行曲线拟合。假设要才以合:y = a+b*exp(x)+c*exp(x.2)首先建立函数,可以通过m文件或函数句柄建立:x=.1;y=;f=(p,x) p(1)+p(2)*exp(x)+p(3)*exp(x.2) % 注意向量化:p(1)=a;p(2)=b;p(3)=c;%可以根据需要选择是否优化参数%opt=options() p0=ones(3,1);% 初值para=fminsearch(p) (y-f(p,x),A2,p0) %可以输出Hessian矩阵res=y-f(para,x)%拟合残差曲线拟合工具箱提供了很多拟合函数,对大样本场合比较有效!非线性拟合nl

5、infit 函数clear all;x1=;x2=;x=x1 x2;y=;f=(p,x)*p(1)*(1-1/p(2)*(1-(1-x(:,1)A(1/p(2)Ap(2)A2.*(x(:,1)A(-l/p(2)-1)A(-p(2).*x(:,1)A(-1/p(2).*x(:,2);p0=8 ;opt=optimset(TolFun,1e-3,TolX,1e-3);%p R=nlinfit(x,y,f,p0,opt)例子例子例子例子例子例子例子例子例子例子例子例子例子例子例子例子直线型例子2.多项式型的一个例子1900-2000年的总人口情况的曲线拟合 clear all;close all;%

6、cftool提供了可视化的曲线拟合!t=1900 1910 1920 1930 1940 1950 1960 1970 1980 1990 2000;y=;%t太大,以t的嘉作为基函数会导致设计矩阵尺度太差,列变量几乎线性相依。变换为 -1 1上 s=(t-1950)/50;%plot(s,y,ro);刎归线:y=a+bxmx=mean(s);my=mean(y);sx=std(s);sy=std(y);r=corr(s,y);b=r*sy/sx;a=my-b*mx;rline=a+b.*s;figure;subplot(3,2,1 2)plot(s,y,ro,s,rline,k);%titl

7、e( 多项式拟合);set(gca,XTick,s,XTickLabel,sprintf(%d|,t);%hold on;n=4;PreYear=2010 2015 2020;% 预测年份tPreYear=(PreYear-1950)/50;Y=zeros(length(t),n);res=zeros(size(Y);delta=zeros(size(Y);PrePo=zeros(length(PreYear),n);Predelta=zeros(size(PrePo);for i=1:nP S(i)=polyfit(s,y,i);Y(:,i) delta(:,i)=polyval(p,s,S

8、(i);%拟合的 YPrePo(:,i) Predelta(:,i)=polyval(p,tPreYear,S(i);%预测res(:,i)=y-Y(:,i);% 残差end% plot(s,Y);%2009a自动添加不同颜色% legend(data,regression line,1st poly,2nd poly,3rd poly,4th poly,2)% plot(tPreYear,PrePo,);% hold off% plot(Y,res,o);% 残差图r=corr(s,Y),A2 %RA2%以合误差估计CIYearAdd=t;PreYear;tYearAdd=s;tPreYea

9、r;CFtit=一阶拟合,二阶才合,三阶拟合,四阶拟合);for col=1:nsubplot(3,2,col+2);plot(s,y,ro,s,Y(:,col),g-);%原始数据和拟合数据legend(Original,Fitted,2);hold on;plot(s,Y(:,col)+2*delta(:,col),r:);%95% CIplot(s,Y(:,col)-2*delta(:,col),r:);plot(tPreYear,PrePo(:,col),);%预测值plot(tPreYear,PrePo(:,col)+2*Predelta(:,col);%预测 95% CIplot(tPreYear,PrePo(:,col)-2*Predelta(:,col);axis( 0 400);set(gca,XTick,tYearAdd,XTickLabel,sprintf(%d|,YearAdd);title(CFtitcol);hold off;endfigure;%残差图for col=1:nsubplot(2,2,col);plot(Y(:,i),res(:,i),o);end一个非线性的 应用例子(多元情况)在百度知道 中,要拟合 y=a*x1An1+b*x2An2+c*x3An3%4:只是作为应用,模型不一定正确!%x2=x3!2,;y=;x1=1x2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论