Bu Blogda Ara

5.12.2013

ranking in matlab

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: