2012-03-18 2 views
1

У меня есть вектор M с возможностями нескольких дубликатов, и я хочу создать индексный вектор, который игнорирует все дубликаты. Я пробовал [C,ia,ib] = unique(M), но я не совсем знаю, как использовать ia и ib.Найти индексы уникальных в векторе matlab?

Редактировать: Извините, я пропустил важную деталь, I - это существующий вектор-указатель, он должен избавиться от всего индекса, который содержит дублирующее значение. Таким образом, исходный вектор выглядит M(I), и я хочу, чтобы «очистить» до I, если я непосредственно Ia = I не будет сохранять исходные данные И.

ответ

2

От http://www.mathworks.co.uk/help/techdoc/ref/unique.html:

[C,ia,ic] = unique(A) также возвращает индексные векторы ia и ic, такие как C = A(ia) и A = C(ic).

Например:

[C ia ic] = unique([11 22 11 33 22 44]) 

приводит:

C = 

    11 22 33 44 

ia = 

    3 5 4 6 

ic = 

    1 2 1 3 2 4 

Update

В вашем обновленном сценарии, вы должны сделать I = I(ia).

+0

Спасибо, что решил мою проблему! – Bonk

0

Вы можете использовать дополнительные выходы.

a=round(10*rand(1,10)) 

[dummy I]=unique(a,'first'); 

u=a(sort(I)); 
Смежные вопросы