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

     

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

     打开微信扫一扫哦!

                                                                                                                          

  • 相关阅读:
    思路不够清晰
    深思不够
    [Android学习笔记]理解焦点处理原理的相关记录
    移动端自动化测试(二)之 Appium常用的API(python)函数介绍
    移动端自动化测试(一)之 Appium+Pyhton环境准备篇
    如何修改上线网站
    sublime如何自动保存
    自动化元素定位
    OC 字典 存储联系人信息 求大神优化代码
    我的第一个字典-Dictionary
  • 原文地址:https://www.cnblogs.com/52geek/p/10093197.html
Copyright © 2011-2022 走看看