Matlab: нахождение индексов значений, общих для двух матриц

У меня простой вопрос.

допустим, у нас есть два массива:

data = [1 1 2 2 2 2 3 3 3 4 4 4 4 4 5 5 5 5 6 6 6];
A = [1 3 6];

Я хочу иметь индексы значений из данных, которые равны любому значению из A.

то есть ответ на это будет: 1, 2, 7, 8, 9, 19, 20, 21

Как это сделать без использования цикла for и сканирования каждого значения из A по одному? Спасибо! Искусство.


person Art    schedule 20.09.2012    source источник


Ответы (1)


Это сделает именно это:

inds = find(ismember(data, A))

функция ismember найдет все элементы в data, которые есть в A. Второй вывод ismember также может быть полезен:

>> [~, b] = ismember(data, A))
ans = 
    1 1 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 3 3 3

где 1, 2 и 3 относятся к индексу в A.

person Rody Oldenhuis    schedule 20.09.2012