zoukankan      html  css  js  c++  java
  • MATLAB中的polyfit函数的使用方法

    MATLAB中的polyfit函数的使用方法

      在MATLAB中polyfit函数是用来进行多项式拟合的。其数学原理是基于最小二乘法进行拟合的。具体使用语法是:

    p = polyfit(x,y,n);
    % 其中x,y表示需要拟合的坐标点,大小需要一样; n表示多项式拟合的次数。
    % 返回值p表示多项式拟合的系数,系数从高到低排列

    具体用法示例:

    1、使用polyfit函数拟合一次多项式,示例:

    %% polyfit函数的使用
    clear; clc; close all;
    % 原始数据
    x = 1:20;
    y = [1,12,23,46,78,98,100,123,160,210,230,270,292,350,346,386,438,349,460,512];
    
    p = polyfit(x,y,1);  % 进行拟合
    y1 = x*p(1)+p(2);  % 生成表达式,计算y的值
    
    figure;  % 绘图
    scatter(x,y,'.');
    hold on;
    plot(x,y1,'Color','r');
    % 添加说明
    xlabel('x');ylabel('y');title('自己构建表达式');
    legend('原始数据','拟合直线');
    

    结果示例:

    在这里插入图片描述

    2、在一般情况下使用polyfit函数的同时也会使用polyval函数,其中polyval函数是用来计算多项式的结果的。这样就不需要自己手动来计算多项式的结果了。其中polyval函数的使用方法如下:

    p = polyfit(x,y,1);
    y1 = polyval(p,x);
    % 其中p就是使用polyfit函数拟合数据集x,y之后的结果,p是一个向量。
    % 结果y1表示使用拟合多项式系数p来求出拟合结果y1。
    具体示例:

    clear; clc; close all;
    % 原始数据
    x = 1:20;
    y = [1,12,23,46,78,98,100,123,160,210,230,270,292,350,346,386,438,349,460,512];
    
    p = polyfit(x,y,1);  % 进行拟合
    y1 = polyval(p,x);  % 生成表达式,计算y的值
    
    figure;  % 绘图
    scatter(x,y,'.');
    hold on;
    plot(x,y1,'Color','r');
    % 添加说明
    xlabel('x');ylabel('y');title('使用polyval函数');
    legend('原始数据','拟合直线');
    

    结果示例:

    在这里插入图片描述

    3、在一些特殊的情况下,当x的坐标值不是从小到大进行排列的时候,只要是x,y的坐标点一一对应的,都可以使用polyfit函数进行拟合处理,示例:

    %% 当拟合的数据x的坐标不是排列好顺序的时候同样可以进行拟合
    clear; clc; close all;
    % 遇到的数据的x轴的坐标是乱序的,不是按照从大到小进行排序,每个点是一一对应的
    x = [1,2,5,7,3,6,9,10,4,8,15,16,13,11,17,12,19,18,20];
    y = [1,12,78,100,23,98,160,210,46,123,346,386,292,230,438,270,460,349,512];
    
    % 当遇到x的点是乱序的时候,同样的可以使用polyfit函数直接进行拟合
    p = polyfit(x,y,1);
    y1 = polyval(p,x);
    
    figure;  % 绘图
    scatter(x,y,'.');
    hold on;
    plot(x,y1,'Color','r');
    % 添加说明
    xlabel('x');ylabel('y');title('x乱序');
    legend('原始数据','拟合直线');
    

    结果示例:

    在这里插入图片描述

  • 相关阅读:
    servlet的之前与之后的基本使用
    java HashMap插入重复Key值问题
    ConcurrentHashMap底层实现原理(JDK1.7 & 1.8)
    spring cloud实现热加载
    spring cloud各个组件以及概念的解释和基本使用
    深入理解java 虚拟机 jvm高级特性与最佳实践目录
    【leetcode】1、两数之和
    【Java 基础领域】二维数组创建内存图
    【Java EE领域】com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'salary' in 'fi
    【JavaEE领域】com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'mp.employee' doesn't exi
  • 原文地址:https://www.cnblogs.com/zhicungaoyuan-mingzhi/p/12859769.html
Copyright © 2011-2022 走看看