我想将数组的值映射到新数组。转换应将原始数组中的任意值映射到首次观察该值的顺序的值。
例如,此映射会将数组的第一个元素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];
答案 0 :(得分: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