我有一个60x6
矩阵X
,其中第 1 列是索引,第 2 到 6 列是该特定索引的数据。我想为数据列中的每个值分配排名,以便第 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