matlab的拟合函数polyfit()函数
matlab的多项式拟合:
polyfit()函数
功能:在最小二乘法意义之上,求解Y关于X的最佳的N次多项式函数。
- clc;clear;
- close all;
- x=[ ];
- y=[2.7 7.4 20.0 54.5 148.4];
- r=corrcoef(x,y) ;%两个变量的相关系数
- a=polyfit(x,y,)
- x1=:0.1:;
- P=polyval(a,x1);%a是多项式拟合后返回的系数
- 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
- clc;clear;
- close all;
- x=[ ];
- y=[2.7 7.4 20.0 54.5 148.4];
- r=corrcoef(x,y) ;
- %a=polyfit(x,y,)
- b=polyfit(x,y,)
- c=polyfit(x,y,)
- x1=:0.1:;
- %Pa=polyval(a,x1);%a是多项式拟合后返回的系数
- Pb=polyval(b,x1);%a是多项式拟合后返回的系数
- Pc=polyval(c,x1);%a是多项式拟合后返回的系数
- %figure();hold on;plot(x,y,'r*',x1,Pa,'b-.');
- figure();hold on;plot(x,y,'r*',x1,Pb,'r-.');
- figure();hold on;plot(x,y,'r*',x1,Pc,'g-.');
注:红色是三次拟合的结果。
绿色是四次拟合的结果。
例1:
- clc;clear;
- close all;
- x=[ ];
- y=[2.7 7.4 20.0 54.5 148.4];
- r=corrcoef(x,y) ;
- %a=polyfit(x,y,)
- [b s]=polyfit(x,y,)
- %c=polyfit(x,y,)
- x1=:0.1:;
- %Pa=polyval(a,x1);%a是多项式拟合后返回的系数
- Pb=polyval(b,x1);%a是多项式拟合后返回的系数
- %Pc=polyval(c,x1);%a是多项式拟合后返回的系数
- %figure();hold on;plot(x,y,'r*',x1,Pa,'b-.');
- figure();hold on;plot(x,y,'r*',x1,Pb,'r-.');
- %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
- clear;
- clf; %清除当前窗口
- clc;
- t = ::; %时间t
- y = [ ]; %人口y
- plot(t,y,'k*');
- hold on;
- % figure; %重新开一个图
- p1 = polyfit(t,y,);
- h=polyval(p1, t);
- plot(t, h);
- axis([ ]); %图像xy轴范围
- disp(char(['y=',poly2str(p1,'t')],['a=',num2str(p1()),' b=',...
- num2str(p1()),' c=',num2str(p1())]));
2. y与t的经验公式为y = a e^(bt)
- clear;
- clf; %清除当前窗口
- clc;
- t = ::; %时间t
- y = [ ]; %人口y
- yy = log(y); %指数基尼必需的线性化变形
- p2 = polyfit(t,yy,);
- b = p2();
- a = exp(p2());
- y2 = a * exp(b*t); %指数拟合函数式
- plot(t,y,'rp',t,y2,'k-');
- grid off;
- xlabel('时间t');
- ylabel('人口数(百万)');
- title('人口数据');
最佳拟合次数的确定:
- clc;clear;
- close all;
- x=[ ];
- y=[2.7 7.4 20.0 54.5 148.4];
- for i=:
- y2=polyfit(x,y,i);
- Y=polyval(y2,x);%计算拟合函数在x处的值。
- if sum((Y-y).^)<0.1
- c=i
- break;
- end
- end
matlab的拟合函数polyfit()函数的更多相关文章
- 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 ...
- matlab中的polyfit函数。
来源:https://blog.csdn.net/zhaluo0051/article/details/77949170 :https://blog.csdn.net/g28_gwf/article/ ...
- MATLAB相关快捷键以及常用函数
MATLAB快捷键大全 F1帮助 F2改名F3搜索 F4地址 F5刷新 F6切换 F10菜单 CTRL+A全选 CTRL+C复制 CTRL+X剪切 CTRL+V粘贴 CTRL+Z撤消 CTRL+O打开 ...
- MATLAB利用散点进行函数曲线拟合
原文:MATLAB利用散点进行函数曲线拟合 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/laobai1015/article/details/77 ...
- MATLAB中trapz和cumtrapz函数
这两个函数都是MATLAB中的内置函数,是基于梯形法则的数值积分公式 例如我们有函数y=x^3-2x-3,为了计算在[0,1]上的积分,可以这么做: 其中x和y分别是自变量和对应的值,trapz其实就 ...
- matlab 对图像操作的函数概览
转自博客:http://blog.163.com/fei_lai_feng/blog/static/9289962200991713415422/ 一. 读写图像文件 1. imread imread ...
- Matlab近期用到的函数(持续更新)
最近任务用到matlab较多,第一版的代码大部分对于矩阵类的计算都是用for循环来完成的,主要是思维还没有适应matlab.看了同事的一份代码后,现在遇到需要循环的地方第一反应就是如何能够用矩阵的直接 ...
- MATLAB中“repmat”与“cat”函数的用法
MATLAB中“repmat”与“cat”函数的用法 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 1. repmat函数 >> z=re ...
- MATLAB算术运算符和常用函数
1 算术运算符 Matlab中的算术运算符按优先级由高到低为: (1) ^ 幂 (2) * 乘 / 右除(正常除) ...
随机推荐
- 【C++札记】标准输入与输出
概述 C语言中使用函数scanf和printf作为标准输入和输出,在C++中引入了类cin和cout进行标准输入和输出,所需头文件为<iostream>,命名空间是std.这里所说的标准输 ...
- 关于MSVCR100.dll、MSVCR100d.dll、Msvcp100.dll、abort()R6010等故障模块排查及解决方法
一.常见故障介绍 最近在开发相机项目(项目细节由于公司保密就不介绍了),程序运行5个来月以来首次出现msvcr100.dll故障等问题,于是乎开始了分析之路,按照度娘上的一顿操作,期间也是出现了各种不 ...
- Linux基础系统优化(二)
SELinux功能 SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,这个功能管理员又爱又恨,大多数生产环境也是关闭的做法,安全手段使 ...
- Linux+QT界面开发(含数据库)小结
今天十一国庆节,过了一个很有意义的国庆节,去了龙岗区图书馆,第一次知道了借的书可以在任意分馆归还!这个切实方便了广大读者.针对Linux应用,特意借阅一本:<linux环境下Qt4图形界面与My ...
- xorm -Alias,Asc,Desc方法实例
Alias(string)给Table设定一个别名 package main import ( "fmt" _ "github.com/go-sql-driver/mys ...
- python之生成器yeild
python生成器Generator——yield 思考: 首先思考这样一个问题: 创建一个列表,但是内存受限,容量一定是有限的.那么如果创建了一个包含100万个元素的列表,不仅占用很大的存储空间,而 ...
- 基于MBT的自动化测试工具——GraphWalker介绍和实际使用
GraphWalker是一个开源的基于模型的自动化测试工具,它可以用来通过图形测试模型来自动生成测试用例. 本文主要描述了使用yed画出FSM, EFSM模型图(常见的流程图),然后使用GraphWa ...
- C++使用代码创建一个Windows桌面应用程序
WinMain函数 Windows应用程序的唯一程序入口. 函数原型 int WINAPI WinMain { HINSTANCE hInstancem HINSTANCE hPreInstance, ...
- MyEclipse的 lib和Build path(构建路径)
首先两种方式对于放置jar包的方式是不同的: Build path(构建路径):对于种方式来说,可以算是对jar包文件的一个引用.可以引用lib下的jar包,也可以引用本地磁盘上的jar包. WEB- ...
- Matlab图像处理基础知识
Matlab图像处理基础知识 Matlab的图片以矩阵的形式存储,矩阵的行列值为图片的行列的色彩值. 1图像表达方式: 像素索引 图像被视为离散单元.如使用I(2,2)可以获取第二行第二列的像素值 空 ...