MATLAB 使用离散数据点实现三维曲面插值
依靠若干离散点实现三维曲面插值是工程应用中的常见问题,也是数据处理工作的常见需求。MATLAB 实现上述功能主要依靠 griddata 函数,该函数支持基于三角形的三次插值(仅支持内插值,估计是一种保形插值)和双调和样条插值(支持外插值)来实现上述功能。
案例数据及空间分布如下图所示:


案例代码如下所示:
clear,clc
%% 离散点曲面插值标准案例
data=readmatrix('data.xlsx');
x=data(:,1);
y=data(:,2);
z=data(:,3);
[X,Y,Z]=griddata(x,y,z,linspace(min(x),max(x))',linspace(min(y),max(y)),'cubic'); % 基于三角形的三次插值 仅支持内插值
% [X,Y,Z]=griddata(x,y,z,linspace(min(x),max(x))',linspace(min(y),max(y)),'v4'); % 双调和样条插值 支持外插值
figure,pcolor(X,Y,Z);shading interp %伪彩色图
figure,contourf(X,Y,Z) %等高线图
figure,surf(X,Y,Z); %三维曲面
figure,meshc(X,Y,Z); %s三维曲面(浅色)+等高线
该案例默认使用 'cubic' 插值方式,可见有效数据范围只涵盖数据点(x,y)在x-y坐标平面的凸包,效果如下:

图1. 伪彩色图

图2. 等高线图

图3. 三维曲面

图4. 剖面图(三维曲面+等高线)
如果要使插值数据完整覆盖设定区域,则需要支持外插值的 'v4' 插值方式,效果如下:

图5. 伪彩色图

图6. 等高线图

图7. 三维曲面

图8. 剖面图(三维曲面+等高线)
参考资料:
Interpolate 2-D or 3-D scattered data - MATLAB griddata (mathworks.com)
浙公网安备 33010602011771号