Как объединить географические данные и вывести точки данных, включенные в каждую ячейку в Matlab

Я использую Matlab для обработки сейсмических данных, каждый из которых предполагает, что соответствует определенной географической точке (известная широта, долгота). Одна из целей состоит в том, чтобы сгруппировать точки на поверхности Земли, которые охватываются ячейками определенного радиуса (например, r=10 градусов). Неважно, если бункеры перекрываются. Я использовал histr() Встроенная функция Matlab, но она выводит центральные координаты (широта, долгота) результирующих бинов и количество точек данных, включенных в бин. Тем не менее, я также хотел бы пометить точки данных и иметь возможность использовать эти помеченные точки данных при последующей обработке. Что я использовал:

lt1=load('midlats.dat');
lg1=load('midlons.dat');
len_lt=length(lt1);
len_lg=length(lg1);
nb=1;
[clats,clons,num,wnum] = histr(lt1,lg1,nb);

В котором nb определяет, сколько лотков вам нужно на угловой градус.

Это где-то близко к моей цели, или я полностью скучаю по картинке??? Кто-нибудь сталкивался с чем-то похожим? Любая помощь / комментарии будут высоко оценены.

1 ответ

Вот мысль - вам нужно определить вектор ребер бина (либо одинаковые для обоих, либо разные), см. Справку для histc:

[nlt, i_lt] = histc(lt1,b_vec1);
[nlg, i_lg] = histc(lg1,b_vec2);

Теперь читерство - используй sub2ind преобразовать i_lt а также i_lg, индексы, в которых находятся ячейки широты и долготы ваших данных, в один индекс.

sz = [length(i_lt),length(i_lg)];
ind = sub2ind(sz,i_lt,i_lg);

Любые очки с одинаковыми ind находятся в одном и том же лотке. Затем вы можете выбрать их, проиндексировав ind например lg1(ind==1) и так далее.

Другие вопросы по тегам