在Matlab中转换数组值

时间:2015-04-22 03:37:37

标签: arrays matlab matrix

我想将数组的值映射到新数组。转换应将原始数组中的任意值映射到首次观察该值的顺序的值。

例如,此映射会将数组的第一个元素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];

1 个答案:

答案 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