matlab的多项式拟合:

polyfit()函数

功能:在最小二乘法意义之上,求解Y关于X的最佳的N次多项式函数。

  1. clc;clear;
  2. close all;
  3. x=[ ];
  4. y=[2.7 7.4 20.0 54.5 148.4];
  5. r=corrcoef(x,y) ;%两个变量的相关系数
  6. a=polyfit(x,y,)
  7. x1=:0.1:;
  8. P=polyval(a,x1);%a是多项式拟合后返回的系数
  9. figure();hold on;plot(x,y,'r*',x1,P,'b-.');

注:a是返回的两次多项式的系数,返回结果是:14.3071  -51.9929   45.2000,这意味着拟合的多项式是:

y=45.2000+(-51.9929)*x+14.3071*x^2

  1. clc;clear;
  2. close all;
  3. x=[ ];
  4. y=[2.7 7.4 20.0 54.5 148.4];
  5. r=corrcoef(x,y) ;
  6. %a=polyfit(x,y,)
  7. b=polyfit(x,y,)
  8. c=polyfit(x,y,)
  9. x1=:0.1:;
  10. %Pa=polyval(a,x1);%a是多项式拟合后返回的系数
  11. Pb=polyval(b,x1);%a是多项式拟合后返回的系数
  12. Pc=polyval(c,x1);%a是多项式拟合后返回的系数
  13. %figure();hold on;plot(x,y,'r*',x1,Pa,'b-.');
  14. figure();hold on;plot(x,y,'r*',x1,Pb,'r-.');
  15. figure();hold on;plot(x,y,'r*',x1,Pc,'g-.');

注:红色是三次拟合的结果。

绿色是四次拟合的结果。

例1:

  1. clc;clear;
  2. close all;
  3. x=[ ];
  4. y=[2.7 7.4 20.0 54.5 148.4];
  5. r=corrcoef(x,y) ;
  6. %a=polyfit(x,y,)
  7. [b s]=polyfit(x,y,)
  8. %c=polyfit(x,y,)
  9. x1=:0.1:;
  10. %Pa=polyval(a,x1);%a是多项式拟合后返回的系数
  11. Pb=polyval(b,x1);%a是多项式拟合后返回的系数
  12. %Pc=polyval(c,x1);%a是多项式拟合后返回的系数
  13. %figure();hold on;plot(x,y,'r*',x1,Pa,'b-.');
  14. figure();hold on;plot(x,y,'r*',x1,Pb,'r-.');
  15. %figure();hold on;plot(x,y,'r*',x1,Pc,'g-.');

注:[b s]=polyfit(x,y,3) %这里返回的s是个结构体,s中的normr表示拟合的残差的二范。


以下例子的来源:https://blog.csdn.net/qq_33591755/article/details/82453757

有如下数据

时间t

1900

1910

1920

1930

1940

1950

1960

1970

1980

1990

2000

人口y

76

92

106

123

132

151

179

203

227

250

281

1. y与t的经验公式为 y = at^2 + bt + c

  1. clear;
  2. clf; %清除当前窗口
  3. clc;
  4. t = ::; %时间t
  5. y = [ ]; %人口y
  6.  
  7. plot(t,y,'k*');
  8. hold on;
  9. % figure;                          %重新开一个图
  10. p1 = polyfit(t,y,);
  11. h=polyval(p1, t);
  12. plot(t, h);
  13. axis([ ]); %图像xy轴范围
  14.  
  15. disp(char(['y=',poly2str(p1,'t')],['a=',num2str(p1()),' b=',...
  16. num2str(p1()),' c=',num2str(p1())]));

2. y与t的经验公式为y = a e^(bt)

  1. clear;
  2. clf; %清除当前窗口
  3. clc;
  4. t = ::; %时间t
  5. y = [ ]; %人口y
  6. yy = log(y); %指数基尼必需的线性化变形
  7. p2 = polyfit(t,yy,);
  8. b = p2();
  9. a = exp(p2());
  10. y2 = a * exp(b*t); %指数拟合函数式
  11. plot(t,y,'rp',t,y2,'k-');
  12. grid off;
  13. xlabel('时间t');
  14. ylabel('人口数(百万)');
  15. title('人口数据');
  1.  


最佳拟合次数的确定:

  1. clc;clear;
  2. close all;
  3. x=[ ];
  4. y=[2.7 7.4 20.0 54.5 148.4];
  5. for i=:
  6. y2=polyfit(x,y,i);
  7. Y=polyval(y2,x);%计算拟合函数在x处的值。
  8. if sum((Y-y).^)<0.1
  9. c=i
  10. break;
  11. end
  12. end

matlab的拟合函数polyfit()函数的更多相关文章

  1. matlab多项式拟合以及指定函数拟合

    clc;clear all;close all;%% 多项式拟合指令:% X = [1 2 3 4 5 6 7 8 9 ];% Y = [9 7 6 3 -1 2 5 7 20]; % P= poly ...

  2. matlab中的polyfit函数。

    来源:https://blog.csdn.net/zhaluo0051/article/details/77949170 :https://blog.csdn.net/g28_gwf/article/ ...

  3. MATLAB相关快捷键以及常用函数

    MATLAB快捷键大全 F1帮助 F2改名F3搜索 F4地址 F5刷新 F6切换 F10菜单 CTRL+A全选 CTRL+C复制 CTRL+X剪切 CTRL+V粘贴 CTRL+Z撤消 CTRL+O打开 ...

  4. MATLAB利用散点进行函数曲线拟合

    原文:MATLAB利用散点进行函数曲线拟合 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/laobai1015/article/details/77 ...

  5. MATLAB中trapz和cumtrapz函数

    这两个函数都是MATLAB中的内置函数,是基于梯形法则的数值积分公式 例如我们有函数y=x^3-2x-3,为了计算在[0,1]上的积分,可以这么做: 其中x和y分别是自变量和对应的值,trapz其实就 ...

  6. matlab 对图像操作的函数概览

    转自博客:http://blog.163.com/fei_lai_feng/blog/static/9289962200991713415422/ 一. 读写图像文件 1. imread imread ...

  7. Matlab近期用到的函数(持续更新)

    最近任务用到matlab较多,第一版的代码大部分对于矩阵类的计算都是用for循环来完成的,主要是思维还没有适应matlab.看了同事的一份代码后,现在遇到需要循环的地方第一反应就是如何能够用矩阵的直接 ...

  8. MATLAB中“repmat”与“cat”函数的用法

    MATLAB中“repmat”与“cat”函数的用法 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 1. repmat函数 >> z=re ...

  9. MATLAB算术运算符和常用函数

    1 算术运算符 Matlab中的算术运算符按优先级由高到低为: (1) ^           幂 (2) *            乘      /            右除(正常除)       ...

随机推荐

  1. 【C++札记】标准输入与输出

    概述 C语言中使用函数scanf和printf作为标准输入和输出,在C++中引入了类cin和cout进行标准输入和输出,所需头文件为<iostream>,命名空间是std.这里所说的标准输 ...

  2. 关于MSVCR100.dll、MSVCR100d.dll、Msvcp100.dll、abort()R6010等故障模块排查及解决方法

    一.常见故障介绍 最近在开发相机项目(项目细节由于公司保密就不介绍了),程序运行5个来月以来首次出现msvcr100.dll故障等问题,于是乎开始了分析之路,按照度娘上的一顿操作,期间也是出现了各种不 ...

  3. Linux基础系统优化(二)

    SELinux功能 SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,这个功能管理员又爱又恨,大多数生产环境也是关闭的做法,安全手段使 ...

  4. Linux+QT界面开发(含数据库)小结

    今天十一国庆节,过了一个很有意义的国庆节,去了龙岗区图书馆,第一次知道了借的书可以在任意分馆归还!这个切实方便了广大读者.针对Linux应用,特意借阅一本:<linux环境下Qt4图形界面与My ...

  5. xorm -Alias,Asc,Desc方法实例

    Alias(string)给Table设定一个别名 package main import ( "fmt" _ "github.com/go-sql-driver/mys ...

  6. python之生成器yeild

    python生成器Generator——yield 思考: 首先思考这样一个问题: 创建一个列表,但是内存受限,容量一定是有限的.那么如果创建了一个包含100万个元素的列表,不仅占用很大的存储空间,而 ...

  7. 基于MBT的自动化测试工具——GraphWalker介绍和实际使用

    GraphWalker是一个开源的基于模型的自动化测试工具,它可以用来通过图形测试模型来自动生成测试用例. 本文主要描述了使用yed画出FSM, EFSM模型图(常见的流程图),然后使用GraphWa ...

  8. C++使用代码创建一个Windows桌面应用程序

    WinMain函数 Windows应用程序的唯一程序入口. 函数原型 int WINAPI WinMain { HINSTANCE hInstancem HINSTANCE hPreInstance, ...

  9. MyEclipse的 lib和Build path(构建路径)

    首先两种方式对于放置jar包的方式是不同的: Build path(构建路径):对于种方式来说,可以算是对jar包文件的一个引用.可以引用lib下的jar包,也可以引用本地磁盘上的jar包. WEB- ...

  10. Matlab图像处理基础知识

    Matlab图像处理基础知识 Matlab的图片以矩阵的形式存储,矩阵的行列值为图片的行列的色彩值. 1图像表达方式: 像素索引 图像被视为离散单元.如使用I(2,2)可以获取第二行第二列的像素值 空 ...