求大神用matlab精度设置做一个最小二乘法等精度线性测量结果处理!求发做出来的过程!方程组如下!

知止而后定,定而后能静,静而后能安,安而后能虑,虑而后能得。
MATLAB实现最小二乘法
最小二乘法
最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。
利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。最小二乘法还可用于曲线拟合。其他一些优化问题也可通过最小化能量或最大化熵用最小二乘法来表达。
线性函数模型
典型的一类函数模型是线性函数模型。最简单的线性式是写成矩阵形式为:
直接给出该式的参数解:
其中,为x的算术平均值,也可解得如下形式:
一般线性情况
若含有更多不相关模型变量,可如组成线性函数的形式:
即线性方程组:
通常人们将xij记作数据矩阵 A,参数bj记做参数向量b,观测值yi记作Y,则线性方程组又可写成:
上述方程运用最小二乘法导出为线性平方差计算的形式为:。
最后的最优解为:。
实验得到4个数据(x, y):(1, 6)、(2, 5)、(3, 7)、(4, 10)。希望找出一条和这四个点最匹配的直线:。
最小二乘法采用的手段是尽量使得等号两边的方差最小:
求通过对β1,β2求偏导:
得到β1=3.5,β2=1.4。所以:最佳。
MATLAB实现
例一:小车时间与位移关系
% 小车时间(xi)和位移关系(yi)关系
x = [0 1 2 3 4 5 6
y = [0 2 4 7 8 9 12 14 15 18];
subplot(m,n,p) 其中前两个参数 m,n是指将你的图分成 m*n个栅格,
每个栅格用 p 来编号,而编号是按行(横着)编号的,所以,当 m = 2,n = 2时编号规则为
所以subplot(2,2,[1 3]),就说明你这一个子图占据的是 1, 3两个栅格,
而subplot(2,2,2)说明子图仅占据第2个栅格.
subplot(1,2,1);
plot(x,y,'o');
% 图形的一些设置
xlabel('时间(秒)');
ylabel('位移(米)');
title('原始数据离散点')
grid on:是打开网格
grid off:是关闭网格
而grid是切换两种状态,如果在grid off的状态下,输入grid,相当于grid on
相反,如果在grid on状态下输入grid 等价于grid off
polyfit函数是matlab中用于进行曲线拟合的一个函数。其数学基础是最小二乘法曲线拟合原理。
曲线拟合:已知离散点上的数据集,即已知在点集上的函数值,构造一个解析函数(其图形为一曲线)使在原离散点上尽可能接近给定的值。
调用方法:polyfit(x,y,n)。用多项式求过已知点的表达式,
其中x为源数据点对应的横坐标,可为行向量、矩阵;
y为源数据点对应的纵坐标,可为行向量、矩阵;
n为你要拟合的阶数,一阶直线拟合,二阶抛物线拟合,并非阶次越高越好,看拟合情况而定。
多项式在x处的值y可用下面程序计算:y=polyval(a,x,m)
p = polyfit(x,y,1)
% 0:0.01:9
起始为0,终点为9,步长0.01
x1 = 0:0.01:9;
y1 = polyval(p,x1);
x2 = 0:0.01:9;
MATLAB中的插值函数为interp1,其调用格式为:
yi= interp1(x,y,xi,'method')
其中x,y为插值点,yi为在被插值点xi处的插值结果;x,y为向量,
'method'表示采用的插值方法,MATLAB提供的插值方法有几种:
'nearest'是最邻近插值, 'linear'线性插值; 'spline'三次样条插值; 'pchip'立方插值.缺省时表示线性插值
注意:所有的插值方法都要求x是单调的,并且xi不能够超过x的范围。
y2 = interp1(x,y,x2,'spline');
subplot(1,2,2);
plot(x1,y1,'k',x2,y2,'r')
xlabel('时间(秒)');
ylabel('位移(米)');
title('黑线为最小二乘法拟合,红色为插值法拟合')
例二:温度和时间关系
例如:对某日隔两小时测一次气温。设时间为ti,气温为Ci,i = 0,2 ,4,…,24。数据如下:
表2 温度(Ci)随时间(ti)变化关系
-----------------------------------------------------------
-----------------------------------------------------------
-----------------------------------------------------------
x = [0 2 4 6 8 10 12 14 16 18 20 22 24]
y = [15 14 14 16 20 23 26 27 26 25 22 18 16]
plot(x,y,'o')
hold on 和hold off,是相对使用的
前者的意思是,你在当前图的轴(坐标系)中画了一幅图,再画另一幅图时,原来的图还在,与新图共存,都看得到
后者表达的是,你在当前图的轴(坐标系)中画了一幅图,此时,状态是hold off,则再画另一幅图时,
原来的图就看不到了,在轴上绘制的是新图,原图被替换了
% 三阶拟合
得到的 p = -0.0061
13.7390是个多项式的系数
% 即拟合的曲线y = -0.0061*x3 + 0.1474*x2 - 0.0246*x + 13.7390 (其中x3表示x的3次方,x2同理)
p = polyfit(x,y,3)
x1 = 0:0.01:24
y1 = polyval(p,x1)
plot(x1,y1,'r')
% axis坐标轴范围设置
axis([0 24 12 28])
xlabel('温度(度)');
ylabel('时间(点)');
title('温度变化图','position', [18,10])
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!【图片】加权的最小二乘法!求救!【matlab吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:198,943贴子:
加权的最小二乘法!求救!收藏
其实就是最小二乘法再多加一个量!我做出来的结果相关系数人负的!肯定不对!大神帮我看看哪里出问题了
求教楼主加权最小二乘法的程序
登录百度帐号2测量误差与数据处理_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
赠送免券下载特权
10W篇文档免费专享
部分付费文档8折起
每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
2测量误差与数据处理
&&2测量误差与数据处理
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩69页未读,
定制HR最喜欢的简历
你可能喜欢矩阵求解的最小二乘法,如何用最小二乘法求解线性方程组请用一个_百度知道
矩阵求解的最小二乘法,如何用最小二乘法求解线性方程组请用一个
我有更好的答案
因为y其实是关于x的显函数,但写不出来具体y=多少x,就用一个不将因变量单独放在一边的式子表示,y是一个函数,而等式两边都是对x求导,根据链式法则,y平方先对外层函数求导是2y,再对内层函数y求导,当然是y‘.重要的是两边都是对x求导,不能一边对x,一边对y
设A为方程组的系数矩阵,B为方程组的常数项值,X为方程组的解。则X=pinv(A)*B,或X=A\B。例如:用matlab求解下列方程组&&A=[1 2;3 -2;1 -1];B=[1;4;2];&& pinv(A)*Bans =
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。MATLAB在数据误差处理中的应用(转载)
MATLAB在数据误差处理中的应用(转载)
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
前言&随着国民经济的迅速发展,大量的数据需要处理,误差理论和数据处理的任务也越来越重,传统的手算以及传统的计算器等工具已不能满足需要。另一方面,计算机在我们的日常生活中却日益普及,显然,运用计算机进行数据处理已是大势所趋。
&MATLAB是美国MathWorks公司推出的一种简洁方便的工程计算语言,自从问世就以其友好的用户界面和多种功能深受各方面用户的欢迎。
&测量数据的数据处理和数据分析涉及到最小二乘法、回归分析、曲线拟合以及线性方程组的求解等内容,而这些正是MATLAB的强项。另外,通过MATLAB强大的图形功能,我们还能方便地将数据图形化,从而进行直观地分析处理数据。
几个基本概念&1、误差:
&若令测量误差为,测得值为x,真值为,则有
&或&&(2-1)
&由于实际应用中真值一般是无从知道或无法确定的,所以,在统计学中,常以测量次数足够大时的测得值的算术平均值近似代替真值。
&2、算术平均值:
&对一真值为的物理量进行等精度的n次测量,得n个测得值,它们都含有随机误差,统称真差。我们常以算术平均值作为n次测量的结果,即
&&&(2-2)
&3、残差v:
&各测得值对其算术平均值的误差量叫做残余误差,简称残差,即
&&&(2-3)
&4、标准差(标准偏差):
&在计量学中,常用标准差来评定测得值的精度,即
&&&(2-4)
&式中::真差(随机误差);
&n:测量次数。
&但在实际应用中,真差往往是不可知的,而常根据有限个测量值的残差v来求取随机测量误差方差的估计值,开方,得
&&&(2-5)
&式2-5称为贝塞尔(Bessel)公式,称为试验标准差,即是标准差的估计值。
&5、随机误差的正态分布:
&正态分布是随机误差的一种重要分布。实践表明,在大多数情况下,在测量过程中产生的误差服从正态分布。
&正态分布的分布曲线如图1所示,
&其分布密度函数为
&&&(2-6)
&式中,y:概率密度;
&x:随机变量;
&:标准差;
&:理论均值或随机变量x的数学期望。
&因被测量的真值无法知道,对连续型随机函数,可将理论均值看作真值,故式2-6可写作
&&&(2-7)
&若用代替,则分布密度函数又可化为
&式2-8说明,测量次数足够大时,正态分布方程式同样适用于残差v。
&6、非等精度测量的加权平均值及其精度参数:
&“权”即各组测量结果相对的可信赖程度,一般用符号p代表“权”,所以求取加权平均值可使用下式
&&&(2-9)
&而各组测量的“权”,与各组测量结果的方差成反比,即
&&&(2-10)
&单位权化以后所得的单位权的标准差为
&&&(2-11)
&m:测量组数。
&而加权平均值的标准差为
&&&(2-12)
&三 在计算几个基本的数字特征中的应用
&1、求算术平均值:
&计算一组数据的算术平均值,使用mean函数,其语法格式为:
&m=mean(x)
&x为所求的一组数据组成的行向量。
测量一个长度10次,所得结果如表1,求数据的算术平均值:
序号&1&2&3&4&5&6&7&8&9&10&
长度(mm)&25.125&25.126&25.127&25.128&25.129&25.130&25.131&25.132&25.133&25.134&
&程序如下,可得结果为=25.1295。
&&& y=25.125:.001:25.134;
&&& m=mean(y)
&2、求残差v:
&计算一组数据样本的程序十分简单,故MATLAB中没有相应的子程序供调用,但我们可以用下面的程序进行求解(设m是数据样本的算术平均值):
&例2.求例1中的数据样本的残差:
&程序如下:
&&& y=25.125:.001:25.134;
&&& m=mean(y);
&&& vi=y-m
-0.0005&&&
&所得vi即为所求的残差。
&3、求标准差:
&如二.4所述,计算一组数据的标准差,常用计算试验标准差代替,此时使用std函数,其格式为
&x为数据样本组成的一组行向量。
&例3.计算例1中的数据的标准差:
&程序如下,可得结果为=0.0030。
&&& y=25.125:.001:25.134;
&&& s=std(y)
&4、正态分布的随机误差的一些参数的求法:
&数据样本的随机误差多服从正态分布,用normstat函数求正态分布的均值和方差,其语法格式为:
&[m,v]=normstat(mu,sigma)
&5、计算非等精度测量的加权平均值及其精度参数:
&例4.1m米尺由3位观测者测量,其结果如表2,求加权平均值及标准差:
组别&一&二&三&
(mm)&&&&
(m)&5&20&10&
&程序如下:
&&& format long
&&& sig=[5 20 10];
&&& mx=[0.015 ];
&&& p=1./sig.^2
&&& p=p.*400
&&& xp=sum(mx.*p)/sum(p)&
%求加权平均值
1.429e+003&
sis=sqrt(sum(p.*(mx-xp).^2)/(3-1))&
%求单位权组的标准差
simx=sis/(sqrt(sum(p)))&
%求加权平均值的标准差
&四 在使用最小二乘法时的应用
&众所周知,最小二乘法在数据处理中具有无法取代的重要地位。最小二乘法既可处理满足线性函数关系的数据样本,也可以处理满足非线性函数关系的数据样本。
&1、线性函数的最小二乘法处理:
&已知数据样本符合线性函数关系,即:y=ax+b,测得的数据样本为长度相等的x,y向量。在MATLAB中通常使用矩阵除法来求解:
&设矩阵A、c、y如下:
&则问题可化为解线性方程:cA=y,在MATLAB中可用c=A\y进行求解,求得列向量c即可得出系数a=c(1,1)、b=(2,1),然后得出线性函数关系。
&例5.为研究20mm轴的几何形状误差,在40mm长度内选5个断面测得直径偏差如表3,试确定沿长度方向形状误差的规律。
&表3 数据表
被测断面距端面距离/mm&2&10&20&30&40&
直径偏差/m&+3&+5&+8&+15&+18&
&解:先将(,)图示于图2上(图中黑色“+”所示),
&经初步分析即知误差呈线性规律。
&设此规律的线性方程为:
&然后在MATLAB中用最小二乘法线性拟合可得近似y、x值为:y=0.4185;
x=1.2617。
&程序如下:
&&& li=[2 10 20 30 40];
&&& dd=[3 5 8 15 18];
&&& a=[ones(size(li))]';
&&& y=dd';
&&& A=c(1,1),b=c(2,1)
&所以,所求的规律近似为:
&图示于图2(图中黑色实线)。
&尽管MATLAB中没有直接供调用的最小二乘法处理系统函数,但我们可以自己直接编写.m文件来供调用,文件如下:
&function [a,b]=lsline(x,y)
&%拟合曲线y=ax+b
&xmean=mean(x);ymean=mean(y);
&sumx2=(x-xmean)*(x-xmean)';
&sumxy=(y-ymean)*(x-xmean)';
&a=sumxy/sumx2;
&b=ymean-a*
&文件保存为lsline.m,即可供调用。调用程序如下:
&&& li=[2 10 20 30 40];
&&& dd=[3 5 8 15 18];
&&& [a,b]=lsline(li,dd)
&即可得出所求的线性规律。
&2、非线性函数的最小二乘法处理:
&MATLAB中非线性最小二乘的处理使用nlinfit函数,下面我们通过一个例子来介绍它的使用方法。
&例6.在化工生产中获得的氯气的等级y随生产时间x下降,已知在x&=8时,y与x之间有如下的非线性模型:
&现收集了10组数据,如表4:
&表4 数据表
x&8&10&12&14&16&18&20&22&24&26&
y&0.49&0.48&0.46&0.43&0.43&0.45&0.41&0.40&0.40&0.40&
&要求利用该数据样本求a、b的值,以确定模型。
&解:我们先将数据图形化如图3:
&首先定义非线性函数的.m文件 model.m:
&function yy=model(be,x)
&yy=a+(0.49-a)*exp(-b*(x-8));
&然后在命令窗口中输入程序:
&&& x=[8 10 12 14 16 18 20 22
&&& y=[0.49 0.48&0.46 0.43
0.43 0.45&0.41 0.40 0.40 0.40];
&&& be=[0 0];
&&& befit=nlinfit(x,y,'model',be)
&故a=0.3584,b=0.0692,模型为:。
&结果图示于图3中。
&五 在回归分析与经验公式中的应用
&在日常生活中,人们常应用试验的方法,寻找出数据样本之间的相互关系。但是通常使用的方法往往不能深刻反映变量间的内在关系,而应用经验公式却能充分表达数据样本各变量之间的变化规律,而且便于从理论上作进一步的研究。回归分析法就是应用数理统计的方法,对数据样本进行分析和处理,从而得出反映各变量间相互关系的经验公式,这就是回归方程。
&1、一元线性经验公式
&一元线性经验公式是指自变量x与因变量y存在的线性变化的规律,其形式为
&式中:a、b即为需要由数据样本确定的回归参数。
&在MATLAB中,我们通常使用一次曲线拟合的方法来求解回归参数,曲线拟合的命令语法格式为
&p=polyfit(x,y,1)
&求得的p为向量[a,b]。
用X光机检查镁合金铸件内部缺陷时,为获得最佳灵敏度,透视电压y应随被透视件的厚度x而改变,试验中获得了如表5所示的数据表,试用其中数据确定其一元线性经验公式:
&表5 数据表
x/mm&12&13&14&15&16&18&20&22&24&26&
y/kV&52&55&58&61&65&70&75&80&85&91&
&程序如下,得所求公式为:y=2.6,图示于图4中:
&&& x=[12:16,18:2:26];
&&& y=[52 55 58 61 65 70 75 80 85 91];
&&& p=polyfit(x,y,1)
2.7429&& 19.8286
&2、一元非线性经验公式
&首先将初步选定的经验公式变换为直线式
&式中,Y,X为只含有一个变量x或y的函数,A和B是与变换前经验公式参数a、b有关的常数和系数。
&常用的变换如下面的表6:
&表6 非线性方程的线性化
序号&非线性方程&线性化方程&线性化变量&
2&&lny=lna+blnx&lny&lnx&
&下面我们通过一个具体的例子来说明求解的方法。
&例8.下面的测量数据(表7),若用指数形式的经验公式拟合,试计算公式的参数a与b。
&表7 数据表
x&2&4&8&16&25&32&50&64&100&
y&24.5&37&56.8&85.5&112.5&129.5&171.5&200&260.5&
&如表6中所示,用lny=lna+blnx对非线性方程线性化,写作
&其中,,,即
&MATLAB中程序如下,可得结果为:,图示于图5:
&&& x=[2&4 8 16 25 32
50&64 100];
&&& y=[24.5 37 56.8 85.5 112.5 129.5 171.5
200 260.5];
&&& xs=log(x);
&&& ys=log(y);
&&& p=polyfit(xs,ys,1);
&&& a=exp(p(2))
&&& b=p(1)
&3、多元线性经验公式
&多元线性经验公式是反映一个因变量与两个或两个以上自变量关系的线性函数式,多元线性经验公式的一般形式为
&式中,:多元回归参数。
&计算多元线性回归参数用regress函数,调用格式为
&b=regress(y,x)
&y为因变量,是一m行1列的列向量;x为自变量,是一m行n列的矩阵;b返回各个自变量的系数,与自变量x中各变量的顺序对应一致,也是一个m行1列的列向量。
&MATLAB功能强大,从数学计算到数据处理,从信号处理到控制理论,MATLAB正在逐渐深入到我们生活和学习中的方方面面,即使仅在数据处理一方面,其强大的功能也绝非一篇小文所能充分论述。我仅希望本文能够抛砖引玉,对大家在数据处理课程中使用MATLAB起到一定的引进作用,为MATLAB在数据处理中的更为普遍的推广应用起到一点作用。
&[1] 梁晋文,陈林才,何贡. 误差理论与数据处理[M].
北京:中国计量出版社,2001
&[2] 苏金明,张莲花,刘波. MATLAB工具箱应用[M].
北京:电子工业出版社,2004
&[3] 聂桂根. MATLAB在测量数据测量中的应用[J].
《测绘通报》,2001,2
转载自:http://deeepsea.blogchina.com/4418709.html
Matlab中如何作线性回归(拟合)-
一元线性回归
&&&&&&用y=a*x+b来拟合一组数据{{x1,y1},{x2,y2}…{xn,yn}}
&&&&&&matlab中使用polyfit
&&&&&&x=data(:,1);
&&&&&&y=data(:,2);
&&&&&&p=polyfit(x,y,1);
&&&&&&p(1)为斜率a,p(2)为截距b
&&&&&&多元线性回归
&&&&&&用y=a1*x1+a2*x2+..+am*xm来拟合数据点{x1i,x2i,…xmi,yi}
&&&&&&&&&&|x11,x21,…xm1|
&&&&&&A=|x12,x22,…xm2|
&&&&&&&&&&|…
… … &&… …
&&&&&&&&&&|x1n,x2n,…xmn|
&&&&&&Y={y1,y2,y3,…,yn}'
&&&&&&则系数{a1,a2,…,am}'=pinv(A)*Y
&&&&&&在matlab中使用
&&&&&&coeff=A\Y
&&&&&&则可以得到最小二乘意义上的拟合系数
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 matlab最小二乘法 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信