2015-04-22 5 views
1

Я хочу сопоставить значения массива с новым массивом. Преобразование должно отображать произвольные значения в исходном массиве в значение порядка, в котором это значение было впервые обнаружено.Преобразование значения массива в Matlab

Например, это сопоставление отображает первый элемент массива, x, на значение 1. Все дополнительные экземпляры x будут отображены на 1. Следующее значение в массиве y будет отображено на значение 2. Все дополнительные экземпляры y будут отображаться и на 2, и так далее.

пример:

array  = [5 5 3 8 5 2 1 7 6 8 8 2 7 7 7 4]; 
new_array = [1 1 2 3 1 4 5 6 7 3 3 2 6 6 6 8]; 

другой пример:

array  = [2 7 3 3 4 4 4 7 7 1 1 5 8 6 3 8 4 4 3 3 6 6]; 
new_array = [1 2 3 3 4 4 4 2 2 5 5 6 7 8 3 7 4 4 3 3 8 8]; 

ответ

3

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

[C, ia, ic] = unique(A,'stable'); 

тогда, ic' ваш ответ.

A = [5 5 3 8 5 2 1 7 6 8 8 2 7 7 7 4]; 
[C, ia, ic] = unique(A,'stable'); 
ic' 
ans = 
1 1 2 3 1 4 5 6 7 3 3 4 6 6 6 8 
+0

Отлично. Спасибо @Kamtal – Randal

+0

@ Randal, приветствую вас, удачи. – Rashid

Смежные вопросы