Как узнать, принадлежит ли точка интерполированной поверхности - PullRequest
0 голосов
/ 04 июля 2019

У меня есть карта батиметрии (морское дно), которая представляет собой матрицу долготы х широты и со значениями глубины моря в каждой точке.Я смоделировал транспортировку отложений, поэтому я могу получить доступ к глубине, их широте и долготе.Я хотел бы знать, если кто-то, как проверить, находятся ли отложения на морском дне.Конечно, долгота и широта карты глубины не совпадают с координатами осадков.

Я думаю, что мне нужно интерполировать, но мне не удалось это сделать.

Вот что я сделал:

x=squeeze(lon_rho(1,:)); 
y=squeeze(lat_rho(:,1));
[xq,yq]=meshgrid(lons(360,:),lats(360,:)); %360 is the time step i chose
vq = griddata(x,y,h,xq,yq);  %%creating the surface
for i=1:length(depths(:,1))
    for j=1:length(depths(1,:))
        if depths(i,j)==vq(find(xq==lons(i,j)),find(yq==lats(i,j)))
            lons(i:end,j)=lons(i,j); %if sediments at the bottom they dont move anymore
            lats(i:end,j)=lats(i,j);
        end
    end
end

это изображение показывает мойрабочее пространство lons lats и глубины обозначают долготу, широту и глубину осадков

У меня есть эта ошибка:

Индекс в позиции 1 превышает границы массива (не должен превышать 1000).

Ошибка в test_unterpolation (строка 20), если глубина (i, j) == vq (найти (xq == lons (i, j)), найти (yq == лат (i, j))))

...