zoukankan      html  css  js  c++  java
  • matlab练习程序(最小二乘多项式拟合)

    最近在分析一些数据,就是数据拟合的一些事情,用到了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原生函数效果还是好一些啊。

  • 相关阅读:
    敏捷的调试
    敏捷的编码
    敏捷的需求分析
    敏捷的反馈
    敏捷的方法论
    敏捷的世界观
    MarkDown添加数学公式
    性能分析初学者指南
    可执行文件的装载与进程
    会话技术------客户端技术cookie
  • 原文地址:https://www.cnblogs.com/tiandsp/p/9766929.html
Copyright © 2011-2022 走看看