Hi, How can I do array rank of a matrix. Such that: [1,5; 7 9; 2 0] will produce [2 4; 5 6; 1 3]. I mean, all variables should be /ranked in an increment order. Lowest will be 1, the highest will be n

1 Kommentar

bym
bym am 9 Okt. 2011
how does [1,5; 7 9; 2 0] produce [2 4; 5 6; 1 3]?
I don't understand what your goal is

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

Jan
Jan am 9 Okt. 2011

0 Stimmen

I assume, the result should be [2 4; 5 6; 3 1] with the last two elements swapped. The method is called sorting, not ranking.
M = [1,5; 7 9; 2 0];
[dummy, index] = sort(M(:));
R(index) = 1:numel(M);
R = reshape(R, size(M));

4 Kommentare

Abdullah Muratoglu
Abdullah Muratoglu am 9 Okt. 2011
Absolutely correct.
Thanks
Abdullah Muratoglu
Abdullah Muratoglu am 10 Okt. 2011
I realized, this code gives the same numbers, different ranks/sorts.
E.g: [3 3] will be ranked as [1 2] not [1 1]. How can I overcome this?
Andrei Bobrov
Andrei Bobrov am 10 Okt. 2011
A = [6 7
7 3
4 1]
[a, ignore, c] = unique(A);
B = A;
a1 = 1:numel(a);
B(:) = a1(c)
Abdullah Muratoglu
Abdullah Muratoglu am 10 Okt. 2011
perfect!
Thanks

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by