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,'.')
就是这样的点:
接下来要做的就是将这些点平滑的连接起来
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');
对比图:
这样,一段离散的数据现在就成了一条比较拟合的函数了
注意,插值函数是三次多项式函数,可以随时进行多项式函数的求值,代数,具体方式见专栏文章
浅吻板牙:从零开始的matlab学习笔记——(10)多项式基本运算zhuanlan.zhihu.com好,这一节我们简单说了说matlab中的数据插值,下一节我们再说一说函数拟合
欢迎喜欢的朋友点赞关注收藏啊:)