我在 MatLab 中遇到 TriScatteredInterp 的问题。我在该位置使用一组具有相应温度的坐标点。它们的形式都是度数(long、lat、temp)。我想在这些点上做一个插值,这样我就可以找出其他点的值并建立一个网格。这是我到目前为止所做的:
long = data(:,1)
lat = data(:,2)
values = data(:,3)
lat = lat.*(pi/180)
long = long.*(pi/180)
X = cos(lat).*cos(long)
Y = cos(lat).*sin(long)
Z = sin(lat)
F = TriScatteredInterp(X,Y,Z,values)
[long1 lat1] = meshgrid(-pi:pi/360:pi, -pi/2:pi/360:pi/2);
X1 = cos(lat1).*cos(long1)
Y1 = cos(lat1).*sin(long1)
Z1 = sin(lat1);
F.Method = 'natural'
InterpVals = F(X1,Y1,Z1);
mesh(long1, lat1, InterpVals)
正如您所看到的,对于每个(长、纬)点,我已经计算了球体上的对应点并使用了 3d 版本的 TriScatteredInterp。问题是插值仅适用于“最近”方法,因为线性或自然仅产生 NaN。正如我所读到的,当我想要插值的点在三角剖分的凸包之外时会发生这种情况,但是由于所需的点正好在球体上,并且输入点覆盖了整个范围(长:-180 到180,纬度:-90 到 90),我只是看不出所有的点怎么可能在凸包之外。任何帮助将不胜感激,ty。