Matlab - 将变量分组并输出组索引的命令

时间:2012-04-12 22:41:40

标签: matlab sorting vector matrix

我有一个向量,例如:a = [1 1 2 2 7 7 7 10 10 10 10 11 15]。它可以是未分类的,但在这里我将其编写为已排序。我正在寻找一个Matlab命令,将上述转换为[1 1 2 2 3 3 3 4 4 4 4 5 6]。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:2)

至少有两种方法可以做到这一点

(1)使用unique的第三个输出:

[~,~,out] = unique(a)

(2)使用统计工具箱中的grp2idx

out = grp2idx(a)

答案 1 :(得分:0)

我不确定是否可以只使用一个命令进行转换,但这是一种方法:

a = [1 1 2 2 7 7 7 10 10 10 10 11 15];

a = sort(a);
UniqVector = unique(a);
for i = 1:size(UniqVector, 2)
    a(a == UniqVector(i)) = i;
end