最小二乘法的应用(Matlab)
2016-09-02 19:11
197 查看
结合例子,直接放例子代码(本源代码根据Steven J.Leon编的《线性代数(原书第七版)》中的最小二乘法应用中自己打码以及修改而来)
安利:强烈推荐Steven J.Leon编的《线性代数(原书第七版)》作为线性代数入门或复习教材(均可),虽后面有一部分未看完,然而这书真的比同济的线代好太多了。最优最小二乘法拟合曲线
其实,不需要用代码也可以快速地拟合曲线:先画出源数据散点图,在Matlab的figure弹出图框–工具(Tools)–基本拟合(Basic fitting)里面有多种插值方法,如”样条插值”、“多项式插值”等。
个人认为,通过学习《线性代数-Steven J.Leon》,发觉最小二乘法其实就是“多项式插值”
%最优最小二乘拟合曲线 %例题 %有数据表,如下: % p 1 2 3 4 5 6 7 8 9 10 % T 222 227 223 233 244 253 260 266 270 266 %要求:最优最小乘法拟合曲线 %代码 p=[1:10]'; T=[222,227,223,233,244,253,260,266,270,266]'; A=vander(p); %构建范德蒙德矩阵,即对 x=(x1,x2,...,x(n+1))',有vander(x)= [x1^n x1^(n-1) ... x1 1 ] %[x2^n x2^(n-1) ... x2 1 ] %[... ... ... ... ... ... ] %[x(n+1)^n x(n+1)^(n-1) ... x(n+1) 1 ] V=A(:,9:10); %取A的第9,10列,此处可改,通过调为V=A(:,8:10)、V=A(:,7:10)等利于拟合精度提高 c=V\T; %计算c,为拟合曲线的多项式降幂系数 q=1:0.1:10; %建立取值区间,为1,1.1,1.2,...,10 z=polyval(c,q); %polyval函数,即有z=c(0)*q^n+c(1)*q^(n-1)+......+c(n-1)*q+c(n),即把矩阵c每个数值作为n次多项式降幂排序系数,与矩阵q的对应幂次数相乘 figure;plot(q,z,p,T,'x'); %画q-z曲线图,作为散点图的拟合曲线;同时,画p,T原题数据散点图(无曲线),如果没有'x',则是画p-T散点连线图
最小二乘圆(利用最小二乘法拟合圆方程)
%最小二乘圆(最优最小二乘法拟合圆) %例题 %有圆参数方程:x=3+2cost,y=1+2sint t=0:0.5:6; x=3+2*cos(t);y=1+2*sin(t); %以上为原来的圆 %以下为加入干扰(噪声)的圆 x=x+0.1*rand(1,13); y=y+0.1*rand(1,13); %以下为利用最小二乘法拟合加入干扰后的数据的圆的圆心c和半径r,Ac=B A=[2*x',2*y',ones(size(x))']; B=diag((diag(x.^2))+(diag(y.^2))); c=A\B; %以下为做散点图以及拟合圆的图 t1=0:0.1:6.3; r=(c(3)+c(1)^2+c(2)^2)^(1/2); x1=c(1)+r*cos(t1); y1=c(2)+r*sin(t1); plot(x1,y1,x,y,'x')
相关文章推荐
- 学习大数据第三天:最小二乘法的MATLAB实现
- 梯度方法在非线形最小二乘法问题的应用
- POJ-3308 最小点权覆盖-最小割的应用+取对数将乘法转加法
- Matlab实现最小二乘法准则拟合
- 利用MATLAB理解最小二乘法
- 最小二乘法(c语言实现线性,matlab进行拟合)及相关系数的求解
- MATLAB 程式设计与应用 ---Matlab入门教程【三】环境设置
- MATLAB在多项式插值及曲线拟合方面的应用
- MATLAB 程式设计与应用 --Matlab入门教程【四】二维绘图
- SQLServer游标简单应用(求分组最小值问题)
- MATLAB 函数在优化问题中的应用
- 多线程VC++和Matlab混编在信号采集和处理中的应用
- matlab nlinfit函数的应用例子
- VC中实现最小二乘法 直线拟合 Y=a0+a1X 以及 Y=aX
- 在.NET中应用MATLAB算法
- matlab 在排列组合方面的应用 (2)
- matlab的stateflow(状态流)简单应用--做一个计数器
- 最小(大)堆应用---堆排序
- 简单不相交集-1(基本应用-最小生成树)
- 将最小特权原则应用到 Windows XP 上的用户帐户