У меня проблема с TriScatteredInterp в MatLab.Я использую набор координатных точек с соответствующей температурой в этом месте.Они все в градусах в форме (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.Как я прочитал, это происходит, когда точки, которые я хочу интерполировать, находятся за пределами выпуклой оболочки триангуляции, но так как необходимые точки находятся точно на сфере, а входные точки охватывают весь диапазон (Long: от -180 до180, широта: от -90 до 90), я просто не вижу, как все точки могут находиться за пределами выпуклой оболочки.Любая помощь будет оценена, ты.