我有一些带有一些随机整数的向量。像
123234
2344
123234
34
3456
我想要做的是找到向量中的唯一元素,并希望在1长度的唯一元素范围内为这些元素赋予新值。
例如,对于上述设置,它将是
4
2
4
1
3
我怎样才能在matlab中做到这一点?
如您所见,我有四个唯一值,我想将最小的唯一值替换为1,将第二个最小的唯一值替换为2,依此类推。
答案 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)