2017-08-23 4 views
-1

効率的な方法を見つけるのを手伝ってください(forループなし)マトリックスのランク付けを取得してください。Matlabは並べ替え、oringalマトリックスのランキングを得る

例:私は 'ID' 知る

orig_matrix = [-1 2 nan 2 3 4 -2; 100 nan nan -100 300 1000 0]'; 
[matrix_sorted, id] = sort(orig_matrix ,1,'ascend'); 

はorig_matrixにmatrix_sortedの要素の位置です。しかし、私はorig_matrixのすべての要素のランク付けを以下のようにしたいと考えています。

ranking = [2 3 7 4 5 6 1; 3 6 7 1 4 5 2] 

多くの感謝!あなたは移調を使用して、簡単なトリックでそれを行うことができます

+0

どのように(2つの要素が同じであるような)ネクタイのランクを決めるのですか?あなたは各列内のランキングを失うだけですか? – Wolfie

+0

この[投稿したMatlabフォーラム](https://blogs.mathworks.com/loren/2007/08/21/reversal-of-a-sort/#7)を見て、あなたの問題に答えてください。 – Bentoy13

+0

あなたの例に基づいて、どのようにランク付けしたいのか分かりません。 –

答えて

1

:単純に、OMGのポストへの追加

[B, I] = sort(orig_matrix.'); 
Result = I.'; 
+1

転置する必要がないように、個別に並べ替える次元を指定することもできます: '[B、I] = sort(orig_matrix、2);'。 – rayryeng

2

、あなたはまた、あなたが移調する必要はありませんので、個別に並べ替えるためにどの次元を指定することができます

[B, Result] = sort(orig_matrix, 2);