为独特元素提供特殊索引

时间:2014-04-08 19:29:14

标签: matlab

我有一些带有一些随机整数的向量。像

123234
2344
123234
34
3456

我想要做的是找到向量中的唯一元素,并希望在1长度的唯一元素范围内为这些元素赋予新值。

例如,对于上述设置,它将是

4
2
4
1
3

我怎样才能在matlab中做到这一点?

如您所见,我有四个唯一值,我想将最小的唯一值替换为1,将第二个最小的唯一值替换为2,依此类推。

1 个答案:

答案 0 :(得分:1)

这应该可以解决问题

v = [123234;
2344;
123234;
34;
3456];

u = unique(v);
new_v = zeros(length(v),1);

for ii=1:length(u)
    idx = find(v==u(ii)); 
    new_v(idx) = ii;
end

唯一函数将返回所有唯一值,已排序。然后,您可以逐步浏览每个已排序的值,找到它们在原始向量中的位置,并创建一个以循环索引作为替换值的新向量。

仔细观察这个独特的功能,事实证明它已经为你做到了这一点。试试这个:

[ ~, ~, new_v] = unique(v)