【问题标题】:Get indices of top N values sorted in descending order in matlab sparse matrix获取matlab稀疏矩阵中按降序排序的前N个值的索引
【发布时间】:2014-02-02 04:06:04
【问题描述】:

我对 matlab 编程语言非常陌生,正在尝试完成以下任务:

   (1,3)       0.0000
   (2,3)       0.0000
   (3,3)       0.0000
   (4,3)       0.4803
   (5,3)       0.0000
   (6,3)       0.0000
   (7,3)       0.0000
   (8,3)       0.0000
   (9,3)       0.0030
  (10,3)       0.0000
  (11,3)       0.0000

上面的矩阵是一个稀疏的列向量(上面只显示了一部分),其中大部分值为零。我想获得按降序排序的值的索引,这基本上会给我正的非零值(向量中没有负值!)以及它们相应的索引。我想知道如何在matlab中实现这一点。我在 matlab 中尝试了 sort 函数,它似乎对值进行了排序,但没有跟踪同样重要的索引。我还查看了 sortrows 功能,但似乎对我不起作用。我尝试了以下代码,该代码来自 SO 的另一个问题(不幸的是,我无法再次找到它以便在此处引用它):

A = sparse([0,1,2;3,4,5;6,7,8])
[sortValues,sortIndex] = sort(A(:),'descend');

输出:

sortValues =

   (1,1)        8
   (2,1)        7
   (3,1)        6
   (4,1)        5
   (5,1)        4
   (6,1)        3
   (7,1)        2
   (8,1)        1 

    sortIndex =

         9
         6
         3
         8
         5
         2
         7
         4
         1

在这种情况下,我不知道如何使用 sortIndex 来检索排序值的原始索引。任何帮助将不胜感激。

只是为了清楚在上述稀疏矩阵的情况下我正在寻找的输出将 是:

(4,3)     0.4803
(9,3)     0.0030
........  0.0000
........  0.0000
........  0.0000
etc...

【问题讨论】:

    标签: matlab sorting matrix sparse-matrix


    【解决方案1】:
     [I,J,S]=find(A);
    
     result=sortrows([I,J,S],-3);
    

    【讨论】:

      猜你喜欢
      • 2014-05-12
      • 2016-11-13
      • 1970-01-01
      • 1970-01-01
      • 2012-01-15
      • 2015-10-12
      • 2012-04-02
      • 1970-01-01
      • 2013-04-11
      相关资源
      最近更新 更多