我有一个地理分布的数据集,该数据集具有X坐标,Y坐标和相应的感兴趣目标值D。也就是说,我的数据集由三个向量组成: X,Y,D 。
现在我想做的是在目标坐标网格上内插和外推目标变量D。 Matlab中的griddata
函数似乎可以帮助我解决这个问题,但是它仅对由我的数据集确定的凸包进行插值。
我想做的就是将数据D外推到感兴趣的任何直角坐标网格,如下所示:
我尝试使用interp2
和griddedInterpolant
之类的函数,但是这些函数似乎要求我以单调矩阵的形式提供已知数据(例如,使用meshgrid
)。也就是说,如果我正确理解,则必须提供 X,Y,D 作为2D网格。但是它们不是网格,它们是非单调向量。
那么我该如何进行?
答案 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')
问题是,您只能使用三种方法进行推断:“ linear
”,“ nearest
”,“ natural
”。