matlab插值与拟合例题_MATLAB中数据插值和数据拟合的用法
一、数据插值:
插值是在一组已知数据点的范围内添加新数据点的技术。可以使用插值来填充缺失的数据、对现有数据进行平滑处理以及进行预测等。MATLAB 中的插值技术可分为适用于网格上的数据点和散点数据点。从数学上来说,数据插值是一种函数逼近的方法。
数据插值的实现方法:
1、一维插值函数为interp1(),
调用格式:
y = interp1(X,Y,X1,method)
该式可以根据X,Y的值来计算函数在X1处的值。其中X,Y是两个等长的已知向量,分别表示采样点和采样值。X1是一个向量或标量,表示要插值的点。
method参数表示用于插值的方法,常用的取值由一下几种方法:
(1) linear: 线形插值,默认方法。将与插值点靠近的两个数据点用直线连接,然后在直线上选取对应插值点的数据。
(2) nearest: 最近点插值。 选择最近样本点的值作为插值数据。
(3) pchip: 分段3次埃尔米特插值。采用分段三次多项式,除满足插值条件,还需满足在若干节点处相邻段插值函数的一阶导数相等,使得曲线光滑的同时,还具有保形性。
(4) spline: 3次样条插值。每一个分段你内构造一个三次多项式,使其插值函数除满足插值条件外,还要求在各节点处具有连续的一阶和二阶导数。
>> x = [0,3,5,7,9,11,12,13,14,15];
>> y = [0,1.2,1.7,2.0,2.1,2.0,1.8,1.2,1.0,1.6];
>> x1 = 0:0.1:15;
>> y1 = interp1(x,y,x1,'spline');
>> plot(x1,y1)
以上四种方法的区别:
线形插值和最近点插值方法比较简单。其中线形插值方法的计算量与样本点n 无关。n越大,误差越小。
3次埃尔米特插值和3次样条插值都能保证曲线的光滑性。相比较而言,3次埃尔米特插值具有保形性,而3次样条插值要求其二阶导数也连续,所以插值函数的性态更好。pchip和spline方法插值的区别blog.csdn.net
MATLAB的二维插值函数为interp2(),
调用格式:y1 = interp2(X,Y,Z,X1,Y1,method)
其中X,Y两个向量,表示两个参数的采样点,Z是采样点对应的函数值。X1,Y1是连个标量或向量,表示要插值的点。指定的算法method计算二维插值。linear为双线性插值算法(默认算法),nearest为最临近插值,spline为三次样条插值,cubic为双三次插值。
关于数据插值下面有个优秀的总结:插值与拟合blog.csdn.net
MATLAB中拉格朗日插值的实现:https://blog.csdn.net/m0_37395228/article/details/80874393blog.csdn.net
MATLAB中牛顿插值的实现:https://blog.csdn.net/wenyusuran/article/details/41725983blog.csdn.nethttps://blog.csdn.net/m0_37395228/article/details/80875351blog.csdn.net
二、曲线拟合:
曲线拟合是一种函数逼近的方法。可以分为线形拟合和非线性拟合。
曲线拟合的原理:对于y = f(x),通过构造一个函数g(x)取逼近未知函数f(x),使得误差在某种意义下达到最小。
一般使用多项式函数作为逼近函数,使用最小二乘法计算误差最小。
曲线拟合的实现方法:
使用polyfit()函数,其功能为求得最小二乘拟合多项式系数。
(1)线形曲线拟合:
调用格式:
(1) P= polyfit(X,Y,m)
(2) [P,S] = polyfit(X,Y,m)
(3) [P,S,mu] = polyfit(X,Y,m)
上述式子中的X,Y样本数据,m为拟合多项式的次数,一般为3次以内。
P为多项式的系数降幂向量,S为误差数据,mu是一个二元向量,mu(1)是mean(X), mu(2) 是std(X).
>> x = [1.0 1.5 2.0 2.5 3.0]';
>> y = [0.9 1.7 2.2 2.6 3.0]';
>> a = polyfit(x,y,1) %次数1为一次线形拟合,相当于设定拟合函数为g(x) = a*x+b,求a和b
a =
1.0200 0.0400 %此处两个值为上述g(x)的a和b值
>> xi = 1:0.1:3;
>> yi = polyval(a,xi); %polyval()函数相当于已知自变量xi和函数a求函数值
>> plot(x,y,'o',xi,yi);上述拟合之后的曲线和原数据点的分布关系如图
>> x = [1.2 3.3 4.5 7.8 9.9 6.7 10.3 13.2 ];
>> y = [2.3 4.5 6.7 7.3 7.6 8.6 9.8 11.2 ];
>> [p,s,mu] = polyfit(x,y,1)
p =
2.6369 7.2500 %该处显示拟合函数为g(x) = 2.6369*x+7.2500
s =
包含以下字段的 struct:
R: [2×2 double]
df: 6
normr: 2.7837
mu =
7.1125
3.9991
(2) 非线性曲线拟合:
1、fit():
对于非线性拟合时需要使用fittype()函数,该函数可以指定所要构造的拟合函数
如下面的例子中 ,我们想使用g(x)来拟合曲线,先使用fittype()函数将其指定该p,然后调用fit()函数来拟合
>> x = [1.0 1.5 2.0 2.5 3.0]';
>> y = [0.9 1.7 2.2 2.6 3.0]';
>> p = fittype('a*x+b*sin(x)+c');
>> f = fit(x,y,p)
f =
General model:
f(x) = a*x+b*sin(x)+c
Coefficients (with 95% confidence bounds):
a = 1.249 (0.9856, 1.512) %此处a,b,c为上述拟合函数的系数最优值
b = 0.6357 (0.03185, 1.24) %此处括号里显示的为置信区间。详见下文链接。
c = -0.8611 (-1.773, 0.05094)
>>plot(f,x,y);
由于曲线拟合只是对于曲线的逼近,其值并不一定确定,在逼近的时候会有误差,置信区间实质上反应了值摆动的一个可能的范围。置信区间_百度百科baike.baidu.com
2、nlinfit():
调用格式:
f = nlinfit(x,y,fun,f0):
上式中,x和y为观察数据的自变量和因变量,fun为待拟合的模型表达式,可以为y = f(x)的M文件的函数名,或者由inline()函数表示,y0是模型初始参数的估计值,计算后获得的返回值y为最小二乘法估计得出的模型最佳系数。
[y,r,J] = nlinfit(x,y,fun,y0):
曲线拟合后的返回参数r为拟合的残差,而J为残差r对a的Jacobi向量构成的矩阵。
[……] = nlinfit(x,y,fun,y0,options):
参数options对拟合过程进行设置,其中包括Maxlter(最大迭代次数)、TolFun(函数参数平方和允许值)、TolX(拟合系数允许的误差值)和Display(控制拟合过程的显示,其中off表示不现实输出、iter显示每次迭代的结果、final只显示最终结果、notify只在函数不收敛的时候显示结果)
3、lsqcurvefit():
调用格式:
[a,rnorm,r,exitflag] = lfqcurvefit(fun,a0,X,Y,lb,ub,options):
其中fun为待拟合的模型表达式,可以为y = f(x)的M文件函数名,或者由inline()函数表示,a0为模型系数的初始估计值,lb和ub分别为拟合系数的预估下界和上界,参数options用于拟合过程设置,同函数nlinfit(),函数返回的参数中a为拟合估计系数,rnorm为误差平方和,r为拟合模型的残差,exitflag为运行情况。
--------------------------------------------------------------------------------
本文部分数据、代码和方法介绍来源于网络。
本文仅供大家参考学习,欢迎指正!
更多MATLAB学习资源请入QQ群:953314432。
matlab插值与拟合例题_MATLAB中数据插值和数据拟合的用法相关推荐
- matlab获取全局变量的值_MATLAB中搜索、查询和全局变量的用法(摘录)
1.MATLAB有几千个函数,而且很多函数有多种调用方式,怎样才能比较快的学习掌握? (1)熟练掌握MATLAB的在线帮助命令.MALTAB的各个函数,不管是内建函数.M文件函数.还是MEX文件函数等 ...
- matlab计算一组数的函数值_matlab中怎么求一组数据概率最大的数
好象直接使用就可以了,第一次出现就包含了定义 顺便把些命令弄给你看下 matlab命令 matlab commands and functions list A a abs 绝对值.模.字符的ASCI ...
- matlab 倒数第二个位置_Matlab中在数据分析的使用
一.数据分析简介: 1.数据的预处理-考虑离群值以及缺失值,并对数据进行平滑处理以便确定可能的模型: 2.数据的汇总-计算基本的统计信息以描述数据的总体位置.规模及形状: 3.数据的可视化-绘制数据以 ...
- matlab多项式的拟合与插值例题_Matlab中数据处理和多项式插值与曲线拟合
一. 基本统计处理 1.查取最大值 MAX函数的命令格式有: [Y,I]= max (X):将max(X)返回矩阵X的各列中的最大元素值及其该元素的位置赋予行向量Y与I:当X为向量时,则Y与I为单变 ...
- MATLAB 长度和像素_Matlab中短时傅里叶变换 spectrogram和stft的用法
在Matlab中,做短时傅里叶变换需要使用函数spectrogram,而在Matlab2019中,引入了一个新的函数stft,下面我们就来看下这两个函数都如何使用. 短时傅里叶变换的基本原理就是将数据 ...
- matlab图像区域填充的原理_MATLAB中怎么用fill填充指定区域?
展开全部 MATLAB 图像处理工具箱中提供了函数62616964757a686964616fe58685e5aeb931333365633864 roifill 用于对特定区域的填充,其语法格式为: ...
- matlab如何新建mat文件_matlab中mat文件的生成和读取
1.mat文件的生成 (1)直接在Matlab中创建并保存矩阵数据 打开Matlab软件,点击左上角文件(File),然后点击新建(new),选择变量(Variable),就新建了一个mat文件. 点 ...
- matlab 倒数第二个位置_matlab中,形如A=A(end-6:end-1,2)是什么意思
matlab中,形如A=A(end-6:end-1,2)是什么意思以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! mat ...
- matlab科学计数法输入_matlab中科学计数法怎么表示
在matlab中,科学计数法用如下形式表示: 3.14e5 表示3.14*10^5=314000 另外,如果需要以科学计数法的形式表示,那么需要在执行语句前加如下语句: formatshortE 举例 ...
最新文章
- AutoFac Ioc依赖注入容器
- Linux内核网络栈1.2.13-有关tcp/ip协议的基础入门
- zookeeper系列(二)实战master选举
- 离别 也许就是一辈子了
- 如何在C#中使用 ArrayPool,MemoryPool
- 织梦留言板guestbook.htm加入头部导航
- KAFKA 最新版 Shell API单机生产与消费
- css3自适应布局单位vw,vh你知道多少?
- php 观察者模式怎么用,php怎么实现观察者模式
- UVA160 Factors and Factorials【筛选法】
- [原]OpenGL基础教程(一)多边形绘制
- 为什么要学习Kotlin
- ubuntu屏幕截图工具
- C# 导入.reg文件
- 怎样在matlab中使用多项式,MATLAB中的多项式运算
- 【BLENDER】-渲染 背景设置
- 为什么程序中用双引号括起来的宏在预处理的时候是不会被宏替换的。
- 用python预测小孩的身高体重标准表格_【儿童的标准身高】儿童身高体重标准表2017 儿童身高体重计算公式...
- js圆周运动动画_JavaScript动画实例:沿圆周运动的圆圈
- 50个超酷的Photoshop的渐变画笔
热门文章
- css 百分比 怎么固定正方形_你未必知道的49个CSS知识点
- 鸿蒙系统怎么换windows,求助~鸿蒙系统windows环境搭建(hpm-cli安装失败)!
- 司爱侠计算机英语教程第五版翻译,计算机英语教程 教学课件 作者 司爱侠 张强华 参考译文.doc...
- 用python生成云词汇_用python生成词云wordcloud
- 阿里P8架构师谈:微服务Dubbo和SpringCloud架构设计、优劣势比较
- 论文浅尝 | LGESQL: 结合线性有向图以及普通有向图的自然语言转换SQL语句模型...
- 论文浅尝 - IJCAI | Knowledge is NOT always you need: 外部知识注入预训练模型的利与弊...
- 论文浅尝 - CVPR2020 | 基于网格特征的可视问答系统
- 领域应用 | 用知识图谱玩唐诗,“唐诗别苑”附庸端午节的别样风雅!
- 剑指offer题目汇总