如何在向量中给出每个元素的顺序

时间:2016-10-27 10:25:28

标签: matlab performance vectorization

例如,我有排序的矢量: [9 9 9 10 13 13 14 15] 我想给每个元素命令(并保留相同的元素)。 即我希望答案是: [1 1 1 2 3 3 4 5]

有什么想法吗? 谢谢!

注意:我的真实矢量要大得多(大约50,000个元素)所以我不能手动完成...

2 个答案:

答案 0 :(得分:6)

使用输入数据的排序特性,这是cumsumdiff的方法 -

cumsum([logical(1) diff(a)~=0])

运行时测试 -

>> a = sort(randi([10,10000],[1,10000000]));% Input array
>> tic,[~,~,idx] = unique(a);toc  % @rahnema1's soln with unique
Elapsed time is 0.883363 seconds.
>> tic,cumsum([logical(1) diff(a)~=0]);toc
Elapsed time is 0.074566 seconds.

答案 1 :(得分:3)

您可以使用$setOnInsert功能

unique