matlab - найти индексы элементов в x

У меня есть матрица x размера Nx2 (содержит координаты (x,y)) и матрица c размера Px1 (P‹=N), которая содержит определенные координаты x, которые меня интересуют. Например:

x = [10 3; 21 9; 98 54; 4 30; 37 12];
c = [4 98];

Я хочу получить координаты элементов в c (в приведенном выше случае [4 3]). Как я могу это сделать? Я нашел только способ, когда c является матрицей 1x1 (т.е. скаляром).


person s5s    schedule 13.05.2012    source источник


Ответы (1)


ismember можно использовать для проверки принадлежности нескольких значений. Вы можете разрезать матрицу N на 2, чтобы искать только x-координаты.

coords = [1 2; 3 4; 5 6; 7 8];
c = [3 7 99];
[v i] = ismember(c, coords(:, 1));
i = 
  [2 4 0]    

i должен содержать индексы, где значения в c отображаются как координата x в coords или 0, если элемент не найден. Если у вас последняя версия Matlab, вы можете заменить v на ~.

person Richante    schedule 13.05.2012
comment
Проблема с этим в том, что он не возвращает индексы в том же порядке, в котором они появляются в x. - person s5s; 13.05.2012
comment
он вернет их в порядке c. Вы можете получить их в порядке x, используя i = sort(i). - person Richante; 13.05.2012