如何在Matlab中内插和外推非单调向量数据集

How to interpolate and extrapolate non-monotonic vector data set in Matlab

我有一个地理分布的数据集,X坐标,Y坐标和相应的感兴趣的目标值D。也就是说,我的数据集由三个向量组成:X,Y,D.

现在我想做的是在感兴趣的坐标网格上内插和外推目标变量 D。 Matlab 中的 griddata-函数似乎可以帮助我解决这个问题,但它只对由我的数据集确定的凸包进行插值。

我想做的是将数据 D 外推到任何感兴趣的直角坐标网格,如下所示:

我曾尝试使用 interp2griddedInterpolant 等函数,但这些函数似乎要求我提供已知数据作为单调矩阵(例如使用 meshgrid)。也就是说,如果我理解正确,我必须提供 X,Y,D 作为二维网格。但它们不是网格,它们是非单调向量。

那我该如何继续呢?

您可以将 griddata 与使用双调和样条插值的选项 'v4' 一起使用。

Unlike the other methods, this interpolation is not based on a triangulation.

其他选项正在使用 scatteredInterpolant。您可以选择使用任何 'linear''nearest' 方法进行外推

我找到了一种使用 scatteredInterpolant 的方法:

xy = -2.5 + 5*gallery('uniformdata',[200 2],0);
x = xy(:,1);
y = xy(:,2);
v = x.*exp(-x.^2-y.^2);
F1 = scatteredInterpolant(x,y,v, 'natural');
[xq,yq] = ndgrid(-5:.1:5) % Make the grid
vq1 = F1(xq,yq); % Evaluate function values at grid of interest
surf(xq,yq,vq1)
hold on
plot3(x,y,v, 'ro', 'MarkerFaceColor', 'red')
xlabel('X')
ylabel('Y')
zlabel('V')
title('Interpolation and exrapolation based on scattered data')

问题是,您只能使用三种方法进行外推:'linear'、'nearest'、'natural'。