Имам проблем с TriScatteredInterp в MatLab. Използвам набор от координатни точки със съответната температура на това място. Всички те са в градуси във формата (дължина, ширина, температура). Искам да направя интерполант на тези точки, за да мога да намеря стойностите в други точки и да изградя мрежа. Това е, което направих досега:
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), просто не виждам как всички точки могат да бъдат извън изпъкналата обвивка. Всяка помощ ще бъде оценена, ти.