Amacım bir dizi elamanı sıralamaktan ziyade herkese bir sıra numarası vermek. Aynı değere sahip kişilere de aynı sıra numarası vermek.
>> A=[4 7 9 1 3 7]
A =
4 7 9 1 3 7
>> [~,~,rankA]=unique(A)
rankA =
3 4 5 1 2 4
Burada 7 değerine sahip 2. ve 6. elemanın sıra numarasının 4 olduğunu görüyoruz. Ve maksimum sıra numarası elaman sayısına eşit değil. Çünkü aynı sıraya sahip elemanlar var.
büyükten küçüğe sıralama için ise şunu da eklemek gerekecek:
>> revRankA = max(rankA) - rankA + 1
revRankA =
3 2 1 5 4 2
Sıralama işlemi ile karıştırmayalım. O şöyle bir şey dönerdi.
>> [sortA indA]=sort(A)
sortA =
1 3 4 7 7 9
indA =
4 5 1 2 6 3
ve indAyı tekrar sort etsem, aynı değere sahip 2. ve 6. elemanlar da kendi içinde sort edilecek, biri 4. sırada diğeri 5.sırada yer alacaktı.
>> [sortsortA indindA]=sort(indA)
sortsortA =
1 2 3 4 5 6
indindA =
3 4 6 1 2 5
kaynak: http://stackoverflow.com/questions/14448759/sort-in-matlab-and-assign-ranking
Hiç yorum yok:
Yorum Gönder