【问题标题】:Find ranking in matrix in descending order [duplicate]按降序查找矩阵中的排名[重复]
【发布时间】:2013-12-02 12:19:01
【问题描述】:

对于我之前的帖子中的困惑,我们深表歉意。我的问题还有别的意思:

我有一个这样的数组:

A = [2.4   1.2   4.1   3.1]

我正在寻找一种方法来对 A 中的元素进行“排名”。也就是说,当我对这个数组进行排序(降序)时,我需要原始数组 A 中每个元素的排名数组。例如, A 中的 4.1 是最大的元素,因此具有 1 级。元素 3.1 是第二大的,因此具有 2 级,依此类推。所以最后,我有这个:

A =     [2.4   1.2   4.1   3.1]
Ranks = [ 3     4     1     2 ]

我正在寻找一个例程来查找上面的“排名”。有什么建议吗?

【问题讨论】:

  • Sort a matrix with another matrix 的可能重复项 - 这被问了一百次,还有here
  • 那么如果排名 1 与最大值相关联,为什么不对数组进行排序?
  • 因为我必须保留A的原始顺序,同时知道每个元素在A中的排名。如果我只是对A进行排序,则A的原始顺序与排名之间的映射得到迷路了。

标签: matlab


【解决方案1】:

好的,我有解决办法。我可以通过这个命令找到排名:

  [A_sorted, rank] = sort(A, 'descend');
  for k=1:10
      rank = find(A_sorted == A(k));
  end

【讨论】:

    猜你喜欢
    • 2015-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-11
    • 2018-08-14
    • 2016-05-02
    • 1970-01-01
    • 2018-04-24
    相关资源
    最近更新 更多