x,y,z为需要拟合或插值的数据。x0,y0,是我们想要求的插值数据Z0对应的坐标。
对均匀数据用interp2可以进行插值,命令:Z0=interp2(x, y, z,x0,y0, ‘linear‘)
其中 linear(线性插值)也可以修改为spline(三次样条插值) nearst(最邻近插值) cubic(立方插值)等。
使用interp2命令要求[X,Y],是均匀划分的网格,且Z在每个X,Y坐标的对应位置上都有数据。
% 假设我们有一些均匀的二维网格数据
[X, Y] = meshgrid(1:5, 1:5); % 生成5x5的网格
Z = peaks(X, Y); % 使用peaks函数生成对应网格点的Z值,这是一个测试函数
% 假设我们想要在一个更细的网格上进行插值
[Xq, Yq] = meshgrid(1:0.1:5, 1:0.1:5); % 生成更细的网格
% 使用interp2进行双三次插值
Zq = interp2(X, Y, Z, Xq, Yq, 'cubic');
% 绘制原始网格和插值结果
figure;
subplot(1,2,1);
surf(X, Y, Z);
title('Original Grid');
xlabel('X');
ylabel('Y');
zlabel('Z');
subplot(1,2,2);
surf(Xq, Yq, Zq);
title('Interpolated Grid (Cubic)');
xlabel('X');
ylabel('Y');
zlabel('Z');
% 调整视角以便更好地查看
view(3);