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

时间:2018-12-13 10:58:30

标签: matlab interpolation extrapolation

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

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

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

enter image description here

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

那么我该如何进行?

2 个答案:

答案 0 :(得分:1)

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

  

与其他方法不同,此插值不是基于三角剖分的。

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

答案 1 :(得分:1)

我发现使用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')

enter image description here

问题是,您只能使用三种方法进行推断:“ linear”,“ nearest”,“ natural”。