find函数matlab_从零开始的matlab学习笔记——(23)数据插值

matlab应用——求极限,求导,求积分,解方程,函数绘图,三维图像,拟合函数....更多内容尽在个人专栏:matlab学习

上一节我们暂时完结了matlab绘图部分,这一节我们了解一下matlab中的数据插值

什么是数据插值?

我们来看一下百度百科的定义:

在离散数据的基础上补插连续函数,使得这条连续曲线通过全部给定的离散数据点。

插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,估算出函数在其他点处的近似值。

举个例子,我们先生成一系列离散数据点:

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];

plot(x,y,'.')

就是这样的点:

0c27d107abbcaa8ce9199ff6e313cf7b.png

接下来要做的就是将这些点平滑的连接起来

interp1函数:

interp1就是我们进行数据插值使用的函数

调用规则:interp1(x,y,x1,mode)

x,y构成我们现在已知的离散数据点(x,y),x1是我们进行插值的范围和精度

mode主要有四种:

linear:将相邻离散点用线段直接连起来(默认方法)

nearest:最近点插值,选择最靠近的样本点的值作为差值数据

pchip:分段3次埃尔米特插值,采用分段三次多项式,除满足离散数据点在插值函数上,还要满足若干离散数据点处的一阶导数存在且连续,使得曲线平滑且具有保形性

spline:三次样条插值,同样采用分段三次多项式,除满足离散数据点在插值函数上,还要满足若干离散数据点处的一阶导数和二阶导数存在且连续。

我们来看一下四种方式的对比(代码有些长,不过放心,这就是四个几乎完全相同的用于对比的代码而已):

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;

subplot(2,2,1);

y1=interp1(x,y,x1,'linear');

plot(x1,y1);

title ('linear');

subplot(2,2,2);

y2=interp1(x,y,x1,'nearest');

plot(x1,y2);

title ('nearest');

subplot(2,2,3);

y3=interp1(x,y,x1,'pchip');

plot(x1,y3);

title ('pchip');

subplot(2,2,4);

y4=interp1(x,y,x1,'spline');

plot(x1,y4);

title ('spline');

对比图:

ab2ff0475118dfe425e77bdcda8091e1.png

这样,一段离散的数据现在就成了一条比较拟合的函数了

注意,插值函数是三次多项式函数,可以随时进行多项式函数的求值,代数,具体方式见专栏文章

浅吻板牙:从零开始的matlab学习笔记——(10)多项式基本运算​zhuanlan.zhihu.com
29835b591d9822f4d9718a3ce5957835.png

好,这一节我们简单说了说matlab中的数据插值,下一节我们再说一说函数拟合

欢迎喜欢的朋友点赞关注收藏啊:)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值