matlab插值与拟合例题_菜鸟进阶系列:MATLAB数学建模·数据插值与拟合
本篇算是开始数据处理了。首先明确俩概念:插值和拟合。两者最根本的共同点都是基于现有数据进行预测、推演,比如根据现有的天文观测数据预测天体位置。插值问题是数学史上的经典问题,拉格朗日、高斯、牛顿等著名数学家均有所研究。
插值的定义是:
在离散数据的基础上补插连续函数,使得这条连续曲线通过全部给定的离散数据点。
插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,估算出函数在其他点处的近似值。
%图像处理时也有“插值”:用来填充图像变换时像素之间的空隙。
说实话一开始我并没想通这个插值中的“插”是怎么回事,interpolation,前边inter是个插,后边polation是个“极”,在电线杆子间搭电线可不太妙……安利一个形象的起搏:生长着的树叶。
叶脉中的主叶脉就好比是自变量轴,那些一级支脉就好比是离散着的数据,它们描摹出一个大致的连续边缘,这个边缘就好比是插补进去的的连续函数,假设在叶子的继续生长过程中,边缘是相似的成比例放大,则可以根据叶子的边缘预测下一个叶脉的相对长短。
我们高中时就用过拟合,比如验证牛顿第二定律的描点连线,拟合得到的函数表达式即与牛顿第二定律相一致,不必经过每个数据点,因为微扰是常态,诚如伽利略所言“懂得忽略什么与懂得重视什么同样重要”。
MATLAB有插值库函数interp,语法如下:
讲义上给出了预测体温的示例:
hours=1:12;
temps=[5 8 9 15 25 29 31 30 22 25 27 24];
h=1:0.1:12;
t=interp1(hours,temps,h,'spline');
plot(hours,temps,'+',h,t,hours,temps,'r:')
% 作图,原散点数据用+标记
xlabel('Hour'),ylabel('Degrees Celsius')
运行后:
如图,曲线经过了每个数据点。
interp2就是2维的插值,即已知数据点(x,y)组成规则的矩阵(或称之为栅格),可使用meshgrid生成。另外,我觉得优先级更高的是griddata函数,它不要求数据规则排列,∴对随机无规律数据进行插值具有很好的效果。
话说我觉得拟合优先级更高,因为建模是建个规律性的玩意,描述趋势或规律拟合比插值强
拟合的时候是默认样本中已经包含噪声,因此不追求拟合曲线通过每一个数据点,衡量拟合数据的标准则是整体数据拟合的误差最小。一般情况下,MATLAB的曲线拟合方法用的是“最小方差”函数,比如polyfit函数。
ployfit(x,y,n)是找到次数为n的多项式系数,对于数据集合{(xi,yi)},满足最小平方差,讲义示例
x0=[1949 1954 1959 1964 1969 1974 1979 1984 1989 1994];%年份
y0=[5.4 6.0 6.7 7.0 8.1 9.1 9.8 10.3 11.3 11.8];%对应年份人口
a=polyfit(x0,y0,1); % 线性拟合
x1=[1949:0.5:1994];
y1=polyval(a,x1);% 多项式拟合即:y1 = a(1)*x1 + a(2);
y1_2005=polyval(a,2005)
b=polyfit(x0,log(y0),1); % 指数函数拟合
y2=exp(b(2))*exp(b(1)*x1);
y2_2005=exp(b(2))*exp(b(1)*2005)
plot(x0,y0,'*')
hold on
plot(x1,y1,'--r')
hold on
plot(x1,y2,'-k')
legend('原数据散点图','线性拟合曲线','指数拟合曲线')
为啥最小二乘法最常见呢?我的直觉是能量(振幅的平方)最小作用原理,噪声就是振动,没有噪声就没有振动没有误差,则是完全准确的拟合。至于证明,我现在不会也不想会~
言归正传,我觉得线性拟合里边多元线性拟合的优先级高,建模肯定得建不少变量,讲义示例
food=[1.5 2 3 4.5 7.5 9.1 10.5 12];
n=length(food);
x=[ones(n,1), food'];
y=[5.6 6.6 7.2 7.8 10.1 10.8 13.5 16.5]';
[b,bint,r,rint,stat] = regress(y,x,0.05)
%regress函数语法:
然后是非线性拟合:非线性曲线拟合是已知输入向量xdata、输出向量ydata,而且还知道输入与输出的函数关系为ydata=F(x,xdata),但不清楚系数向量x,MATLAB中可以用函数curvefit。有个问题是非线性的方法多了去了,多到系统说用户你自己写个自定义非线性处理函数吧~
这里的‘fun’就是自定义的函数
这让主程序更简洁一些:
%%%%%%%%%%%%%%%%函数单独存为m文件%%%%%%%%%%%%%%%%%%
function f=curvefun2(x)
tdata=[100:100:1000]'; cdata=1e-03*[4.54,4.99,5.35,5.65,5.90,6.10,6.26,6.39,6.50,6.59]';
f=x(1)+x(2)*exp(-0.02*x(3)*tdata)- cdata;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%主程序:
x0=[0.2,0.05,0.05]';
[x,resnorm,residua]=lsqnonlin('curvefun2',x0)
讲义上还给了适用面更广的通用的非线性拟合函数这里的‘model’也是自定义的‘fun’
我还想提一嘴参数估计函数,参数估计包括点估计和区间估计,我们在概率论学过不少。MATLAB统计工具箱提供了很多与参数估计相关的函数,例如计算待估参数及其置信区间、估计服从不同分布的函数的参数。最常用的是高斯/正态分布进行参数估计——
[muhat,sigmahat,muci,sigmaci]=normfit(x),muhat是μ带帽^,sigimahat是σ带帽^,muci是μ的95%置信区间,sigmaci是σ的95%置信区间。
[muhat,sigmahat,muci,sigmaci]=normfit(x,alpha)进行参数估计并计算100(1-alpha)%置信区间。
其他的分布如β分布、泊松分布、二项分布、指数分布、伽马分布等也输出一个分布的参数估计表的向量。
下边是我觉得优先级最高的操作:MATLAB曲线拟合工具箱。
不过我的cftool和讲义上的截图界面不一太一样,功能应该一样,A=rand(4,4)、线性拟合
文件按钮里有我们想要的操作,比如封装成函数、保存、用figure打印图形等。
matlab插值与拟合例题_菜鸟进阶系列:MATLAB数学建模·数据插值与拟合相关推荐
- python三次样条插值拟合的树行线_数学建模笔记——插值拟合模型(一)
啊好像距离上次写作又过了七天,啊好像我之前计划的一周两三篇,啊辣鸡小说毁我青春,啊我是一只可怜的鸽子. 不管怎样,我又回来了,并坚定地更新着hhh.再过两三天就是我们学校数学建模选拔,再过八九天就是期 ...
- pythonchar中的拟合方法_在python中利用numpy求解多项式以及多项式拟合的方法
构建一个二阶多项式:x^2 - 4x + 3 多项式求解 >>> p = np.poly1d([1,-4,3]) #二阶多项式系数 >>> p(0) #自变量为0时 ...
- matlab代码用python替换_用python替换Matlab
我是一名工程专业的学生,我必须做大量的数值处理,绘图,模拟等工作.我目前使用的工具是Matlab. 我在大学计算机上使用它来完成大部分任务. 但是,我想知道有哪些可用的免费选项. 我已经做过一些研究, ...
- word中的matlab的代码如何插入_(完整word版)MatLab代码大全
8 第 2 章 图像获取 2.3.2 二维连续傅里叶变换 例 2.2 figure(1); % 建立图形窗口 1 [u,v] = meshgrid(-1:0.01:1); % 生成二维频域网格 F1 ...
- 数学建模笔记——插值拟合模型(一)
啊好像距离上次写作又过了七天,啊好像我之前计划的一周两三篇,啊辣鸡小说毁我青春,啊我是一只可怜的鸽子. 不管怎样,我又回来了,并坚定地更新着hhh.再过两三天就是我们学校数学建模选拔,再过八九天就是期 ...
- 数学建模准备 插值(拉格朗日多项式插值,牛顿多项式插值,分段线性插值,分段三次样条插值,分段三次Hermite插值)
文章目录 摘要(必看) 0 基础概念 什么是插值 插值用途 什么是拟合 插值和拟合的相同点 插值和拟合的不同点 1 常用的基本插值方法 1.1 多项式插值法 1.1.1 拉格朗日多项式插值法 多项式插 ...
- 数学建模笔记——插值拟合模型(二)
今天是8月21日,距离上次写文章好像将近一个月了--这段时间经历了建模校内选拔赛,考试周,以及与网络小说的斗智斗勇--好吧,其实也没干什么,除了考试就是荒废-- 我最近有在思考一个问题,就是我所关注的 ...
- 数学建模常见算法:拟合算法
曲线拟合问题是指:已知平面上个点,,互不相同.寻求函数,使 在某种准则下与所有数据点最为接近,即曲线拟合得很好. 从拟合的定义可以看出:拟合不需要使曲线一定经过给定的点,而插值要求多项式要经过所有样本 ...
- 饿狼追兔的可视化matlab,高阶常微分方程模型饿狼追兔问题数学建模实例
高阶常微分方程模型饿狼追兔问题数学建模实例 现有一只兔子.一匹狼,兔子位于狼的正西110米处,假设兔子与狼同时发现对方并一起起跑,兔子往正北70米处的巢穴跑,而狼在追兔子.已知兔子.狼是匀速跑且狼的速 ...
最新文章
- 再有人问你Netty是什么,就把这篇文章发给他
- 从自监督学习主流方法、最新工作进展,看未来前景研究方向
- PostgreSQL可视化客户端工具
- 虚拟计算机配置文件,如何更改虚拟内存位(可以解决由于启动计算机时出现了页面文件配置问题……).docx...
- CentOS安装Mysql8
- Tomcat9版本不支持jsp处理PUT,DELETE之外的请求的解决方案(405方法不允许)
- nagios安装文档
- fast neural style transfer图像风格迁移基于tensorflow实现
- 360换机 v2.12.5.9 官方安卓版
- 图书管理系统软件测试说明,图书管理系统软件测试报告
- 第十八期 Amesim视频教程热交换器建模仿真专题
- android psensor测试,android传感器Gsensor和Psensor的使用举例
- PSGAN——姿态稳健型可感知空间式生成对抗网络论文详细解读与整理
- 美团外卖用户评价文本研究
- 被中国家长摧残的十种优秀儿童品质
- ArcGis for Android 集成天地图四川(一)
- uniapp开发APP使用echart
- 深度学习 - 其本质是什么?
- 行内元素和块级元素:内联(行级)元素不能设置margin-top
- linux 编码文件,linux文件编码
热门文章
- #求教# 公共less模块中的背景图片地址应该怎么处理?
- SSRF(服务端请求伪造)
- 《分布式系统:概念与设计》一1.3 分布式系统的趋势
- Blend4Web —— 开源的 WebGL 框架
- UGUIAnimator模块知识点随记
- 【2014-11-22】《The Hardware/Software Interface》– Section 5
- linux下gcc升级
- 软件开发的核心是技术人员吗?
- 为何excel中数据无法计算机,excel表格内数据为何无法计算机-为什么EXCEL单元格内的数字不能运算...
- Nacos OPEN API配置管理测试