• 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原生函数效果还是好一些啊。

     

     关注公众号: MATLAB基于模型的设计 (ID:xaxymaker) ,每天推送MATLAB学习最常见的问题,每天进步一点点,业精于勤荒于嬉

     打开微信扫一扫哦!

                                                                                                                          

  • 相关阅读:
    CSS颜色代码大全(自用)
    Redis学习——redis.conf 配置文件介绍
    职场生存法则
    你绝对想不到的是,照片还可以这么折腾!
    scene类和platform类javafx
    员工辞职申请表.docx
    Group容器的使用与点击事件javafx
    7种join连接查询
    面试非技术问题
    加入新公司,怎样快速熟悉业务和项目?
  • 原文地址:https://www.cnblogs.com/52geek/p/10093197.html
Copyright © 2020-2023  润新知