整理Matlab线性回归拟合应用.docx

上传人:b****1 文档编号:339194 上传时间:2023-04-29 格式:DOCX 页数:12 大小:73.68KB
下载 相关 举报
整理Matlab线性回归拟合应用.docx_第1页
第1页 / 共12页
整理Matlab线性回归拟合应用.docx_第2页
第2页 / 共12页
整理Matlab线性回归拟合应用.docx_第3页
第3页 / 共12页
整理Matlab线性回归拟合应用.docx_第4页
第4页 / 共12页
整理Matlab线性回归拟合应用.docx_第5页
第5页 / 共12页
整理Matlab线性回归拟合应用.docx_第6页
第6页 / 共12页
整理Matlab线性回归拟合应用.docx_第7页
第7页 / 共12页
整理Matlab线性回归拟合应用.docx_第8页
第8页 / 共12页
整理Matlab线性回归拟合应用.docx_第9页
第9页 / 共12页
整理Matlab线性回归拟合应用.docx_第10页
第10页 / 共12页
整理Matlab线性回归拟合应用.docx_第11页
第11页 / 共12页
整理Matlab线性回归拟合应用.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

整理Matlab线性回归拟合应用.docx

《整理Matlab线性回归拟合应用.docx》由会员分享,可在线阅读,更多相关《整理Matlab线性回归拟合应用.docx(12页珍藏版)》请在冰点文库上搜索。

整理Matlab线性回归拟合应用.docx

整理Matlab线性回归拟合应用

(完整版)Matlab线性回归(拟合)-应用

编辑整理:

 

尊敬的读者朋友们:

这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整版)Matlab线性回归(拟合)-应用)的内容能够给您的工作和学习带来便利。

同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。

本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整版)Matlab线性回归(拟合)-应用的全部内容。

(完整版)Matlab线性回归(拟合)—应用

编辑整理:

张嬗雒老师

 

尊敬的读者朋友们:

这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布到文库,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是我们任然希望(完整版)Matlab线性回归(拟合)—应用这篇文档能够给您的工作和学习带来便利.同时我们也真诚的希望收到您的建议和反馈到下面的留言区,这将是我们进步的源泉,前进的动力.

本文可编辑可修改,如果觉得对您有帮助请下载收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为<(完整版)Matlab线性回归(拟合)-应用>这篇文档的全部内容。

Matlab线性回归(拟合)

对于多元线性回归模型:

设变量

的n组观测值为

的估计值为

在Matlab中,用regress函数进行多元线性回归分析,应用方法如下:

语法:

b=regress(y,x)

[b,bint,r,rint,stats]=regress(y,x)

[b,bint,r,rint,stats]=regress(y,x,alpha)

b=regress(y,x),得到的p+1维列向量b即为(11.2)式给出的回归系数β的估计值.

[b,bint,r,rint,stats]=regress(y,x)给出回归系数β的估计值b,β的95%置信区间((p+1)*2向量)bint,残差r以及每个残差的95%置信区间(

向量)rint;向量stats给出回归的R2统计量和F以及临界概率p的值.

如果

的置信区间(bint的第i+1行)不包含0,则在显著水平为

时拒绝

的假设,认为变量

是显著的.

[b,bint,r,rint,stats]=regress(y,x,alpha)给出了bint和rint的100(1-alpha)%的置信区间.

1。

三次样条插值函数的MATLAB程序

matlab的spline

x=0:

10;y=sin(x);%插值点

xx=0:

.25:

10;%绘图点

yy=spline(x,y,xx);

plot(x,y,'o',xx,yy)

2。

非线性拟合

非线性拟合可以用以下命令(同样适用于线性回归分析):

beta=nlinfit(x,y,fun,beta0)

x:

给定的自变量数据,

y:

给定的因变量数据,

fun:

要拟合的函数模型(句柄函数或者内联函数形式),

beta0:

函数模型中系数估计初值,

beta返回拟合后的系数

x=lsqcurvefit(fun,x0,xdata,ydata)

fun要拟合的目标函数,

x0:

目标函数中的系数估计初值,

xdata:

自变量数据,

ydata:

函数值数据,

x:

拟合返回的系数(拟合结果),

2。

1nlinfit函数

格式:

[beta,r,J]=nlinfit(x,y,'model’,beta0)

beta:

估计出的回归系数,

r:

残差,

J:

Jacobian矩阵,

x,y:

输入数据x、y分别为n*m矩阵和n维列向量,对一元非线性回归,x为n维列向量。

Model:

事先用m—文件定义的非线性函数

beta0:

回归系数的初值

例1已知数据:

x1=[0.5,0。

4,0.3,0。

2,0。

1];

x2=[0.3,0.5,0。

2,0。

4,0。

6];

x3=[1.8,1.4,1.0,1。

4,1.8];

y=[0。

785,0.703,0.583,0.571,0.126]’;

且y与x1,x2,x3关系为多元非线性关系(只与x2,x3相关)为:

y=a+b*x2+c*x3+d*(x2。

^2)+e*(x3。

^2)

求非线性回归系数a,b,c,d,e。

(1)对回归模型建立M文件model.m如下:

functionyy=myfun(beta,x)

x1=x(:

,1);

x2=x(:

2);

x3=x(:

,3);

yy=beta

(1)+beta

(2)*x2+beta(3)*x3+beta(4)*(x2。

^2)+beta(5)*(x3.^2);

(2)主程序如下:

x=[0.5,0.4,0。

3,0.2,0.1;0。

3,0.5,0.2,0。

4,0。

6;1.8,1.4,1.0,1.4,1。

8]’;

y=[0.785,0。

703,0.583,0。

571,0.126]';

beta0=[1,1,1,1,1]’;

[beta,r,j]=nlinfit(x,y,@myfun,beta0)

例题2:

混凝土的抗压强度随养护时间的延长而增加,现将一批混凝土作成12个试块,记录了养护日期(日)及抗压强度y(kg/cm2)的数据:

养护时间:

x=[234579121417212856]

抗压强度:

y=[35+r42+r47+r53+r59+r65+r68+r73+r76+r82+r86+r99+r]

建立非线性回归模型,对得到的模型和系数进行检验。

注明:

此题中的+r代表加上一个[—0.5,0。

5]之间的随机数

模型为:

y=a+k1*exp(m*x)+k2*exp(—m*x);

Matlab程序:

x=[234579121417212856];

r=rand(1,12)-0。

5;

y1=[354247535965687376828699];

y=y1+r;

myfunc=inline('beta

(1)+beta

(2)*exp(beta(4)*x)+beta(3)*exp(—beta(4)*x)',’beta’,’x');

beta=nlinfit(x,y,myfunc,[0.50.50.50.5]);

a=beta

(1),k1=beta

(2),k2=beta(3),m=beta(4)

%testthemodel

xx=min(x):

max(x);

yy=a+k1*exp(m*xx)+k2*exp(—m*xx);

plot(x,y,’o’,xx,yy,'r')

结果:

a=87.5244

k1=0。

0269

k2=—63。

4591

m=0.1083

图形:

2.2lsqnonlin

非线性最小二乘(非线性数据拟合)的标准形式为

其中:

L为常数

在MATLAB5.x中,用函数leastsq解决这类问题,在6.0版中使用函数lsqnonlin。

则目标函数可表达为

其中:

x为向量,F(x)为函数向量。

函数lsqnonlin

格式x=lsqnonlin(fun,x0)%x0为初始解向量;fun为

,i=1,2,…,m,fun返回向量值F,而不是平方和值,平方和隐含在算法中,fun的定义与前面相同。

x=lsqnonlin(fun,x0,lb,ub)%lb、ub定义x的下界和上界:

.

x=lsqnonlin(fun,x0,lb,ub,options)%options为指定优化参数,若x没有界,则lb=[],ub=[]。

[x,resnorm]=lsqnonlin(…)%resnorm=sum(fun(x)。

^2),即解x处目标函数值。

[x,resnorm,residual]=lsqnonlin(…)%residual=fun(x),即解x处fun的值。

[x,resnorm,residual,exitflag]=lsqnonlin(…)%exitflag为终止迭代条件.

[x,resnorm,residual,exitflag,output]=lsqnonlin(…)%output输出优化信息。

[x,resnorm,residual,exitflag,output,lambda]=lsqnonlin(…)%lambda为Lagrage乘子。

[x,resnorm,residual,exitflag,output,lambda,jacobian]=lsqnonlin(…)%fun在解x处的Jacobian矩阵。

例5-17求下面非线性最小二乘问题

初始解向量为x0=[0.3,0。

4].

解:

先建立函数文件,并保存为myfun.m,由于lsqnonlin中的fun为向量形式而不是平方和形式,因此,myfun函数应由

建立:

k=1,2,…,10

functionF=myfun(x)

k=1:

10;

F=2+2*k—exp(k*x

(1))-exp(k*x

(2));

然后调用优化程序:

x0=[0。

30。

4];

[x,resnorm]=lsqnonlin(@myfun,x0)

结果为:

Optimizationterminatedsuccessfully:

NormofthecurrentstepislessthanOPTIONS。

TolX

x=

0。

25780。

2578

resnorm=%求目标函数值

lsqcurvefit

非线性曲线拟合是已知输入向量xdata和输出向量ydata,并且知道输入与输出的函数关系为ydata=F(x,xdata),但不知道系数向量x。

今进行曲线拟合,求x使得下式成立:

在MATLAB5.x中,使用函数curvefit解决这类问题。

函数lsqcurvefit

格式x=lsqcurvefit(fun,x0,xdata,ydata)

x=lsqcurvefit(fun,x0,xdata,ydata,lb,ub)

x=lsqcurvefit(fun,x0,xdata,ydata,lb,ub,options)

[x,resnorm]=lsqcurvefit(…)

[x,resnorm,residual]=lsqcurvefit(…)

[x,resnorm,residual,exitflag]=lsqcurvefit(…)

[x,resnorm,residual,exitflag,output]=lsqcurvefit(…)

[x,resnorm,residual,exitflag,output,lambda]=lsqcurvefit(…)

[x,resnorm,residual,exitflag,output,lambda,jacobian]=lsqcurvefit(…)

参数说明:

x0为初始解向量;xdata,ydata为满足关系ydata=F(x,xdata)的数据;

lb、ub为解向量的下界和上界

,若没有指定界,则lb=[],ub=[];

options为指定的优化参数;

fun为拟合函数,其定义方式为:

x=lsqcurvefit(@myfun,x0,xdata,ydata),其中myfun已定义为functionF=myfun(x,xdata)

F=…%计算x处拟合函数值fun的用法与前面相同;

resnorm=sum((fun(x,xdata)-ydata).^2),即在x处残差的平方和;

residual=fun(x,xdata)—ydata,即在x处的残差;

exitflag为终止迭代的条件;

output为输出的优化信息;

lambda为解x处的Lagrange乘子;

jacobian为解x处拟合函数fun的jacobian矩阵.

例5—16求解如下最小二乘非线性拟合问题

已知输入向量xdata和输出向量ydata,且长度都是n,拟合函数为

即目标函数为

其中:

初始解向量为x0=[0。

3,0.4,0。

1]。

解:

先建立拟合函数文件,并保存为myfun。

m

functionF=myfun(x,xdata)

F=x

(1)*xdata。

^2+x

(2)*sin(xdata)+x(3)*xdata。

^3;

然后给出数据xdata和ydata

〉>xdata=[3。

67。

79.34。

18。

62。

81。

37。

910。

05。

4];

>〉ydata=[16.5150.6263.124.7208.59.92。

7163.9325。

054。

3];

>>x0=[10,10,10];%初始估计值

〉>[x,resnorm]=lsqcurvefit(@myfun,x0,xdata,ydata)

结果为:

Optimizationterminatedsuccessfully:

RelativefunctionvaluechangingbylessthanOPTIONS。

TolFun

x=

0。

22690。

33850.3021

resnorm=

6。

2950

进行非线性回归时可使用nlinfit指令,其语法如下:

beta=nlinfit(X,y,fun,beta0)

[beta,r,J]=nlinfit(X,y,fun,beta0)

[。

.。

]=nlinfit(X,y,fun,beta0,options)

[x,resnorm]=lsqcurvefit(fun,x0,xdata,ydata);

参数解释:

input:

fun——编程者需要拟合的函数

x0——函数系数的初始猜测值

xdata-—x坐标的值

ydata——y左边的值

output:

x——经拟合的系数

resnorm——thevalueofthesquared2—normoftheresidualatx:

sum((fun(x,xdata)—ydata)。

^2)。

example:

functionfitfunc

xdata=[3.57。

79。

34。

58.62.81.37.910。

15.4];%定义自变量

ydata=[16。

5149。

6263.124。

6208。

59.92.7162。

9322。

052。

3];

%定义因变量

x0=[7,7,7];%初始估计值

[x,renorm]=lsqcurvefit(@myfun,x0,xdata,ydata);%确定待定系数

disp(x);

disp(renorm);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2