matlab练习程序(最小二乘多项式拟合)(代码片段)

tiandsp tiandsp     2023-01-06     143

关键词:

最近在分析一些数据,就是数据拟合的一些事情,用到了matlab的polyfit函数,效果不错。

因此想了解一下这个多项式具体是如何拟合出来的,所以就搜了相关资料。

这个文档介绍的还不错,我估计任何一本数值分析教材上讲的都非常清楚。

推导就不再写了,我主要参考下面两页PPT,公式和例子讲的比较清楚。

公式:

技术分享图片

例子:

技术分享图片

matlab代码如下:

clear all;
close all;
clc;

N=10;                %设置拟合阶数
x=1:0.5:10;
y=cos(x);           %生成待拟合点

p=polyfit(x,y,N);   %使用matlab函数拟合数据

xx=min(x):0.01:max(x);
yy=polyval(p,xx);
            
plot(xx,yy);        %画出拟合结果
hold on;
plot(x,y,r.)

%下面是使用公式来做最小二乘多项式拟合
F=zeros(N+1,length(x));
F(1,:)=1;
for i=2:N+1
   for j=1:length(x) 
        F(i,j) = x(j)^(i-1);      
   end
end
F=F*F;

[m ~]=size(F);
Y=zeros(m,1);
Y(1) = sum(y);
for i=2:m
    for j=1:length(y)
        Y(i) = Y(i)+y(j)*x(j)^(i-1);
    end  
end

Re = FY;
Re=Re(end:-1:1);  %数组反序
figure;
plot(x,y,r.)
hold on;
yyy=polyval(Re,xx);
plot(xx,yyy,g)

p
Re

matlab的polyfit函数结果:

技术分享图片

自己的结果:

技术分享图片

在阶数较低的时候两种方法结果基本一致,阶数很高的时候,自己的方法结果就差一些了,matlab原生函数效果还是好一些啊。

matlab点云处理(十七):最小二乘多项式曲线拟合(代码片段)

文章目录1多项式曲线拟合函数polyfit2代码实现2.1多项式与三角函数拟合2.2多项式与二维点集拟合1多项式曲线拟合函数polyfitpolyfit—多项式曲线拟合主要有3种重载方式NO.1给定坐标点(x,y)(x,y)(x,y)和拟合阶数nnn,返回n+1n+1n&#... 查看详情

matlab练习程序(修正指数曲线拟合)(代码片段)

对于一般的指数曲线如:y=a*e^(k*t),可以先对两边求对数得到:log(y)=log(a)+k*t这样的曲线,然后用最小二乘来计算系数。但是对于修正指数曲线如:y=k+a*b^t这样的函数,没法直接求对数然后用最小二乘,因为有一个常数项k,这里... 查看详情

最小二乘曲线拟合的c++实现(代码片段)

...致用,采用C++实现最小二乘曲线拟合/最小二乘多项式拟合。需要明确的一点是,对于同一组数据,以X为自变量和以Y为自变量进行拟合的误差会有所差别。2数据说明本次采用的数据为pcd点云文件, 查看详情

matlab练习程序(三种方法解最小二乘)(代码片段)

解最小二乘的方法有很多,这里给出常见的三种方法实现。一是一般方法,之前博客一般都用这种方法。二是svd分解法,之前有用过svd(见这里,这里,这里和这里)解其他问题,但是没用来解过最小二乘。三是qr分解法,这个好... 查看详情

matlab练习程序(椭球拟合)(代码片段)

这次我们来拟合一个椭球,之前也拟合过空间的椭圆,不过当时只用了五个点,方程组应该是欠定的,看看就好。要拟合椭球,首先设定椭球一般方程:根据这个方程和已有的空间椭球点数据,利用最小二乘就能得到上面九个参... 查看详情

matlab练习程序(曲面拟合)(代码片段)

这里用到的还是最小二乘方法,和上一次这篇文章原理差不多。就是首先构造最小二乘函数,然后对每一个系数计算偏导,构造矩阵乘法形式,最后解方程组。比如有一个二次曲面:z=ax^2+by^2+cxy+dx+ey+f首先构造最小二乘函数,然... 查看详情

polyfit多项式曲线拟合matlab(代码片段)

polyfit多项式曲线拟合全页折叠语法p=polyfit(x,y,n)[p,S]=polyfit(x,y,n)[p,S,mu]=polyfit(x,y,n) 说明示例p =polyfit(x,y,n) 返回阶数为 n 的多项式 p(x) 的系数,该阶数是 y 中数据的最佳拟合(在最小二乘方式中)... 查看详情

拟合函数:线性插值_样条插值(一维,二维,三维)_最小二乘拟合(代码片段)

...多时,函数复杂度急剧上升。样条插值法:低阶多项式进行拟合,误差比拉格朗日稍大,但是减轻了龙格现象。线性插值与样条插值#coding=<utf-8>#线性差值问题,根据已知坐标点拟合函数#B-spl 查看详情

[数学建模]使用matlab实现数据拟合

 目录1.线性最小二乘法2.多项式拟合方法(polyfit)3.最小二乘优化:lsqlin,lsqcurvefit,lsqnonlin,lsqnonneg4.曲线拟合的用户图形界面求法(cftool) 1.线性最小二乘法 x=[1925313844]‘;y=[19.032.349.073.397.8]‘;r=[ones(5,1),x.^2];ab=ry%ifAB=C 查看详情

matlab练习程序(三种方法解最小二乘)(代码片段)

解最小二乘的方法有很多,这里给出常见的三种方法实现。一是一般方法,之前博客一般都用这种方法。二是svd分解法,之前有用过svd(见这里,这里,这里和这里)解其他问题,但是没用来解过最小二乘。三是qr分解法,这个好... 查看详情

matlab非线性最小二乘拟合lsqnonline和lsqcurvefit

MATLAB中进行非线性最小二乘拟合的函数为:lsqnonline函数和lsqcurvefit函数。帮助文档中的解释为:lsqnonlin:Solvenonlinearleast-squares(nonlineardata-fitting)problem(非线性最小二乘);lsqcurvefit:Solvenonlinearcurve-fitting(data-fitting)problemsin 查看详情

matlab曲线拟合

...合:在matlab中,用polyfit函数来求得最小二乘拟合多项式的系数,再用polyval函数按所得的多项式计算所给点上的函数近似值。例子:用一个三次多项式在区间[0:2*pi]内逼近函数sin(x)在给定区间内均匀选取2... 查看详情

浅谈最小二乘法

...近似为线性系统,因此两种情况下的计算核心是相似的。多项式最小二乘法将因变量预测中的方差描述为自变量函数与拟合曲线的偏差。当观测值来自指数族且满足温和条件时,最小二乘估计和最大似然估计是相同的。最小二乘... 查看详情

最小二乘拟合(代码片段)

...41262.htmlhttps://blog.csdn.net/lotus___/article/details/20546259 二.最小二乘法  我们以最简单的一元线性模型来解释最小二乘法。什么是一元线性模型呢? 监督学习中,如果预测的变量是离散的,我们称其为分类(如决策树,... 查看详情

数据拟合:最小二乘二维圆拟合的c++实现(另一种方法)(代码片段)

...2代码实现3相关链接1介绍在数据拟合(二):最小二乘二维圆拟合的C++实现一文中已经详细介绍了最小二乘二维圆拟合的原理与实现,这里给出另一种实现方法,最终,两种方法对同一数据拟合,... 查看详情

数据拟合:最小二乘二维圆拟合的c++实现

文章目录1最小二乘圆拟合原理2代码实现3相关链接首先,生成二维圆点云,其方程为(x−1)2+(y−2)2=16(x-1)^2+(y-2)^2=16 查看详情

matlab练习程序(局部加权线性回归)(代码片段)

通常我们使用的最小二乘都需要预先设定一个模型,然后通过最小二乘方法解出模型的系数。而大多数情况是我们是不知道这个模型的,比如这篇博客中z=ax^2+by^2+cxy+dx+ey+f这样的模型。局部加权线性最小二乘就不需要我们预先知... 查看详情

插值回归拟合逼近的区别

...点同时满足某一曲线方程,计算只要求出该方程的系数2多项式插值:用一个多项式来近似代替数据列表函数,并要求多项式通过列表函数中给定的数据点。(插值曲线要经过型值点。)3多项式逼近:为复杂函数寻找近似替代多... 查看详情