列 1 がインデックスで、列 2 から 6 がその特定のインデックスのデータである60x6
マトリックスがあります。X
データ列の各値にランクを割り当てたいと思います。列 2 から 5 は降順でランク付けされ (最高値はランク 1、最低値はランク 60)、列 6 は降順でランク付けされます (最低値はランク付けされます)。 1、最高ランクの 60) ですが、インデックス (列 1) に従って行の順序が維持されるようにします。同順位の順位には、値の昇順での順位の平均に等しい順位が割り当てられます。
私はいくつかの提案(ここ、ここ、ここ)を調べて、自分のバージョンを試しました:
[~,Z1] = sort(X(:,2),'descend');
[~,Z2] = sort(X(:,3),'descend');
[~,Z3] = sort(X(:,4),'descend');
[~,Z4] = sort(X(:,5),'descend');
[~,Z5] = sort(X(:,6));
しかし、私が望むように機能するものはないようです。だから
X =
1 0.9503 0.5646 0.3785 0.5468 -0.0161
2 0.9430 0.5728 0.3320 0.6693 -0.0161
3 0.5305 0.2719 0.1545 0.3480 0.0042
4 0.8588 0.5816 0.3429 0.6477 -0.0158
5 0.9391 0.5984 0.3362 0.6054 -0.0161
6 0.3780 0.2307 0.0906 0.3387 0.0054
私は欲しい
Ans =
1 1 4 1 4 2
2 2 3 4 1 2
3 5 5 5 5 5
4 4 2 2 2 4
5 3 1 3 3 2
6 6 6 6 6 6