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) * 乘 / 右除(正常除) ...
随机推荐
- [转帖]熬夜变傻有科学依据,人类睡觉时会被“洗脑”,科学家首次拍下全程 | Science
熬夜变傻有科学依据,人类睡觉时会被“洗脑”,科学家首次拍下全程 | Science https://mp.weixin.qq.com/s/hJeJjh0GSUclcoh3Z6mySQ 关注前沿科技 量 ...
- 解决elementui日期时间选择器提交时与后台date类型不匹配问题
问题描述: 在前端使用elementui的日期时间选择器后,在通过axios进行提交的时候,前端控制台出现了400(数据类型不匹配的错误)的错误. <el-form-item label=&qu ...
- vs中web api程序不包含适合于入口点的静态“Main”方法
步骤:选择该项目的属性--应用程序--输出类型--类库
- 屏蔽组合键[CTRL+N]
https://www.cnblogs.com/gaodu2003/archive/2011/05/05/2037229.html …… const _KeyPressMask=$80000000; ...
- Fedora30 - Xrdp 远程桌面
Windows RDP 访问 Fedor 远程桌面需要使用 Xrdp 开源工具. [lipandeng@localhost ~]$ sudo dnf install xrdp [lipandeng@l ...
- go 疑难杂症
func Test_doSeond(t *testing.T) { msg := make([]Msg, 0) for i := 0; i < 5; i++ { m := Msg{ data: ...
- 基于 Docker 和 GitLab 的前端自动化部署实践笔记
基于 Docker 和 GitLab 的前端自动化部署 实践笔记 随着接触的项目越来越多,在部署测试流程上重复耗时工作也越来越多,所以对前端工作的CI/CD实现愈发迫在眉睫. 前端开发由于三大框架的崛 ...
- MQTT协议中的topic
1.MQTT协议中的topic 定阅与发布必须要有主题,只有当定阅了某个主题后,才能收到相应主题的payload,才能进行通信. 2. 主题层级分隔符--"/" 主题层级分隔符使得 ...
- vue实现滑块滑动校验
为了防止机器操作自动提交,我们需要添加滑动校验. 实现代码如下: 1.子组件slider.vue <template> <div class="drag" r ...
- UML软件工程第一次实验
顶层设计 UC1诊所设备管理 UC1.1 统计设备使用情况 用况标识号 UC1.1 用况名称 统计设备使用情况 创建者 派克 创建时间 2017-9-25 参与者 客户 说明 客户需要知道自己诊所设备 ...