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) | 假定一个默认的样本点网格。默认网格点覆盖矩形区域 |
Vq = interp2(V) | 将每个维度上样本值之间的间隔分割一次,形成优化网格,并在这些网格上返回插入值。 |
Vq = interp2(V,k) | 将每个维度上样本值之间的间隔反复分割 |
Vq = interp2(___,method) | 指定备选插值方法: |
Vq =interp2(___,method,extrapval) | 还指定标量值 extrapval,此参数会为处于样本点域范围外的所有查询点赋予该标量值。 如果您为样本点域范围外的查询省略 extrapval 参数,则基于 method 参数,interp2 返回下列值之一: 对于 ‘spline’ 和 ‘makima’ 方法,返回外插值 对于其他内插方法,返回 NaN 值 |
? 可选择的插值方法
Methood | 描述 | 注释 |
---|---|---|
‘nearest’ | 最邻近插值:在查询点插入的值是距样本网格点最近的值。 | 每个维度需要两个网格点。 内存要求最低,计算速度最快 |
‘liner’ | 在查询点插入的值基于各维中邻点网格点处数值的线性插值。这是默认插值方法。 | 每个维度需要至少两个网格点 比 |
‘spline’ | 在查询点插入的值基于各维中邻点网格点处数值的三次插值。插值基于使用非结终止条件的三次样条。 | 每个维度需要四个点 比 |
‘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当中,若是需要更加细密的数据,可以更改
文章仅供参考,请勿照搬照抄!转载请说明出处!
CSDN–十安辰 --链接:https://blog.csdn.net/weixin_44123908