Извлечение данных из матрицы на основе второй матрицы долготы и широты в MATLAB

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

Например, достопримечательностями могут быть:

[-64.7664,
 -64.2296,
 -64.4314,
 -64.4869,
 -64.400,
 -64.4000;

 117.3117,
 127.9522,
 127.9867,
 128.10270,
 127.13330,
 127.13330]

Первый столбец представляет широту, а столбец 2 - долготу.

В то время как образцы данных будут выглядеть примерно так:

c1   c2   c3   c4   c5        c6        c7    ...
0,   3,   6,   4,   -74.21,   103,      4     ...
1,   NaN, 4,   6,   -70.1,    101,      8     ...
3,   0,   5,   3,   -64.7664, 117.3117, 5     ...
2,   4,   12,  NaN, -62.1,    120,      NaN   ...
19,  5,   16,  1,   -64.400,  127.1333, 16    ...

Данные продолжаются еще для 29 столбцов. В этом примере строки 3 и 5 необходимо преобразовать в новую матрицу.

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

Как мне найти, какие образцы (строки) были собраны в интересующих точках, а затем создать новую матрицу, содержащую только информацию об образцах, найденных в интересующих точках?


person user2877623    schedule 04.02.2014    source источник
comment
Был бы полезен какой-нибудь пример.   -  person Marcin    schedule 04.02.2014
comment
Можете ли вы показать нам некоторые из ваших подходов и ожидаемый результат в виде кода?   -  person McMa    schedule 04.02.2014
comment
добавлен пример спасибо   -  person user2877623    schedule 04.02.2014


Ответы (1)


Вы можете использовать intersect, как в этом примере

a = [1 2; 3 4; 5 5];
b = [3 4; 5 5; 2 1];

[c,ia,ib] = intersect(a,b,'rows')

где векторы ia содержат общие индексы для a и ib общие индексы в b.

person marsei    schedule 04.02.2014
comment
Я уже пробовал это, но это не работает. Мое предположение относительно того, почему это не работает, заключается в том, что матрица точек интереса имеет только два столбца, в то время как другая матрица имеет 38, а долгота и широта являются 6-й и 7-й строками. Не знаю, так ли это на самом деле, это всего лишь предположение. - person user2877623; 04.02.2014
comment
Вы можете выбрать интересующий столбец, например a(:,[1 2]) и b(:,[25 32]) - person marsei; 04.02.2014
comment
intersect - это путь. Но, вероятно, в вашем примере и описании данных есть смешение между столбцами и строками. - person marsei; 04.02.2014
comment
Столбец и строки находятся в нужном месте, но я решил проблему. Проблема в том, что некоторые образцы имеют ту же долготу и широту, что и другой образец, и это говорит мне только строку одного из образцов этой долготы и широты, а не несколько, которые имеют то же местоположение. - person user2877623; 04.02.2014
comment
как бы я с этим справился? - person user2877623; 04.02.2014