二维插值的应用代码

例题:
在某海域测得一些点(x,y)处的水深z由下表给出,船的吃水深度为5英尺,估计在矩形区域(75,200)*(-50,150)里的哪些地方船要避免进入

x    129    140    103.5    88    185.5    195    105    157.5    107.5    77    81    162    162    117.5
y    7.5    141.5    23    147    22.5    137.5    85.5    -6.5    -81    3    56.5    -66.5    84    -33.5
z    4    8    6    8    6    8    8    9    9    8    8    9    4    9
代码:

clear, clc

x = [129 140 103.5 88 185.5 195 105 157.5 107.5 77 81 162 162 117.5];
y = [7.5 141.5 23 147 22.5 137.5 85.5 -6.5 -81 3 56.5 -66.5 84 -33.5];
z = [4 8 6 8 6 8 8 9 9 8 8 9 4 9];

% 此处z为水深,为了让图像更直观,这里取负号
z = -z;

% 在矩形区域(75,200)*(-50,150)做二维插值
%(cx, cy) 定义了一个矩形区域,其中x轴范围为75到200,步长为0.5;y轴范围为-50到150,步长为0.5
cx = 75:0.5:200;
cy = -50:0.5:150;
z3 = griddata(x, y, z, cx, cy', 'cubic'); % 海底曲面图

subplot(1, 2, 1)%将当前图形窗口分为1行2列的子图,并将第1个子图设置为当前活动图。
meshz(cx, cy, z3)%绘制了一个三维曲面图,并将 z3 数据按照 cx 和 cy 的坐标网格进行展示
xlabel('x')
ylabel('y')
zlabel('z')

% 做出水深<5的海域范围,z=5的等高线
subplot(1, 2, 2)
[c, h] = contour(cx, cy, z3);
%使用了 cx 和 cy 作为坐标网格的横纵坐标,z3 作为坐标网格上的值进行插值。函数的返回值 c 是等高线的高度矩阵,h 是绘制等高线的句柄。

clabel(c, h, -5);
%用于在等高线上添加标签,其中 -5 表示只在高度为 -5 的等高线上添加标签
%griddata是MATLAB中用于进行二维插值的函数,它可以根据给定的离散数据点,生成对应的网格上的插值结果。
%griddata函数的语法如下:
%ZI = griddata(X, Y, Z, XI, YI, method)
%参数说明:
%X和Y:表示给定数据点的横纵坐标,分别为列向量或二维数组。
%Z:表示给定数据点的值,与X和Y的大小相同。
%XI和YI:表示插值结果的横纵坐标,可以是列向量或二维数组。
%method:表示插值方法,可以是'linear'(线性插值,默认)、'cubic'(三次样条插值)或'nearest'(最近邻插值)。

运行图窗:

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值