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 件のコメント

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

サインインしてコメントする。

 採用された回答

Jan
Jan 2011 年 10 月 9 日

0 投票

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 件のコメント

Abdullah Muratoglu
Abdullah Muratoglu 2011 年 10 月 9 日
Absolutely correct.
Thanks
Abdullah Muratoglu
Abdullah Muratoglu 2011 年 10 月 10 日
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 2011 年 10 月 10 日
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 2011 年 10 月 10 日
perfect!
Thanks

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeShifting and Sorting Matrices についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by