MATLAB-二维插值的笔记与应用–十安辰

MATLAB-二维插值的笔记与应用–十安辰

? 我们以一个题来了解二维插值,如下:

? 在一次对沙堆形状测量的时候得到部分高度信息,如表所示,利用二维插值计算该区域内其他点的高度。

y\x 1 2 3 4
1 6.36 6.97 6.23 4.47
2 6.98 7.12 6.31 4.78
3 6.83 6.73 5.99 4.12
4 6.61 6.25 5.53 3.34

分析


? 这个题要求我们求这个沙堆

了解一维插值函数interp2()


? 用法如下:

语法 说明
Vq = interp2(X,Y,V,Xq,Yq) 使用线性插值返回双变量函数在特定查询点的插入值。结果始终穿过函数的原始采样。X 和 Y 包含样本点的坐标。V 包含各样本点处的对应函数值。Xq 和 Yq 包含查询点的坐标。
Vq = interp2(V,Xq,Yq) 假定一个默认的样本点网格。默认网格点覆盖矩形区域 X=1:nY=1:m,其中 [m,n] = size(V)。如果您希望节省内存且不在意点之间的绝对距离,则可使用此语法。
Vq = interp2(V) 将每个维度上样本值之间的间隔分割一次,形成优化网格,并在这些网格上返回插入值。
Vq = interp2(V,k) 将每个维度上样本值之间的间隔反复分割 k 次,形成优化网格,并在这些网格上返回插入值。这将在样本值之间生成 2^k-1 个插入点。
Vq = interp2(___,method) 指定备选插值方法:'linear''nearest''cubic''makima''spline'。默认方法为 'linear'
Vq =interp2(___,method,extrapval) 还指定标量值 extrapval,此参数会为处于样本点域范围外的所有查询点赋予该标量值。
如果您为样本点域范围外的查询省略 extrapval 参数,则基于 method 参数,interp2 返回下列值之一:
对于 ‘spline’ 和 ‘makima’ 方法,返回外插值
对于其他内插方法,返回 NaN 值

? 可选择的插值方法

Methood 描述 注释
‘nearest’ 最邻近插值:在查询点插入的值是距样本网格点最近的值。 每个维度需要两个网格点。
内存要求最低,计算速度最快
‘liner’ 在查询点插入的值基于各维中邻点网格点处数值的线性插值。这是默认插值方法。 每个维度需要至少两个网格点
'nearest' 需要更多内存
‘spline’ 在查询点插入的值基于各维中邻点网格点处数值的三次插值。插值基于使用非结终止条件的三次样条。 每个维度需要四个点
'cubic' 需要更多内存和计算时间
‘cubic’ 在查询点插入的值基于各维中邻点网格点处数值的三次插值。插值基于三次卷积。 每个维度中的网格必须有均匀间距,但并非所有维度的网格间距都必须相同
每个维度需要至少四个点
比 ‘linear’ 需要更多内存和计算时间

代码


? 利用二维插值计算该区域内其他点的高度的代码如下:

1
2
3
4
5
6
7
8
9
[x, y] = meshgrid((1:4),(1:4)); %生成4*4网格
z = [6.36 6.97 6.23 4.47;       %这是沙堆高度
     6.98 7.12 6.31 4.78;
     6.83 6.73 5.99 4.12;
     6.61 6.25 5.53 3.34];
 [X, Y] = meshgrid((1:0.1:4),(1:0.1:4));    %要求的沙堆的二维坐标
 %surf(x,y,z)
 Z = interp2(x,y,z,X,Y,'spline');           %我们选择spline方式求二维插值
 surf(X,Y,Z)                    %绘制插值后的沙堆三维图像

图像如下:

在这里插入图片描述

? 区域内其他点的高度存储在Z当中,若是需要更加细密的数据,可以更改 [X, Y] = meshgrid((1:0.1:4),(1:0.1:4));的步进即可
在这里插入图片描述


文章仅供参考,请勿照搬照抄!转载请说明出处!
CSDN–十安辰 --链接:https://blog.csdn.net/weixin_44123908