本文源于《数学建模》,interp2函数是matlab中的二维插值,下面用一个网格测量温度的例子讲解interp2函数如何使用吧。
一、例子:网格温度分布
题目中分布曲面的图形画出来,效果是这样子的:
>> x=1:5;
>> y = 1:3;
>> temps = [82 81 80 82 84;79 63 61 65 81;84 84 82 85 86];
>> mesh(x,y,temps)
从图中可以看出,图形并不是光滑的。我们可以使用二维插值函数进行插值,将其图形变得光滑。那么二维插值函数如何使用呢?我们先使用(以0.2为单位进行作图),再讲解
>> x=1:5;
>> y = 1:3;
>> temps = [82 81 80 82 84;79 63 61 65 81;84 84 82 85 86];
>> xi = 1:.2:5;
>> y1 = 1:.2:3;
>> zzi = interp2(x,y,temps,xi',y1,'cubic');
>> mesh(xi,y1,zi);
上图中可以发现,曲面一下子变得平滑许多。那么interp2函数参数如何填呢?
二、interp2函数参数使用指南
z =interp2(x0,y0,x,y,'method')
- x0 插值节点x坐标
- y0 插值节点y坐标
- z0 插值节点z坐标
- x 被插值节点x坐标
- y 被插值节点y坐标
- method是插值的方法,例如有:
n
e
a
r
e
s
t
:
最
邻
近
插
值
l
i
n
e
a
r
:
双
线
性
插
值
s
p
l
i
n
e
:
三
次
样
条
插
值
c
u
b
i
c
:
双
三
次
插
值
缺
省
时
:
双
线
性
插
值
nearest: 最邻近插值\\ linear :双线性插值\\ spline :三次样条插值\\ cubic :双三次插值\\ 缺省时 :双线性插值\\
nearest:最邻近插值linear:双线性插值spline:三次样条插值cubic:双三次插值缺省时:双线性插值
同样也有要求:
- x0,y0单调
- x,y可取为同型矩阵,或一个取行向量,一个取列向量(难理解,可看上面例子)
- x,y的值分别不超过x0,y0的范围
三、总结
通过interp2函数参数学习,我们不仅掌握了其参数用法,而且还对二维插值如何将不光滑的曲面变成光滑的曲面,这一点是颇为惊奇的。真是一个不错的好文章,方便收藏!