1

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

4

2 回答 2

2

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

(1) 使用第三个输出unique

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

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

out = grp2idx(a)
于 2012-04-13T01:32:24.987 回答
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
于 2012-04-13T00:20:03.907 回答