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 Exchange で Shifting and Sorting Matrices についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by