我对 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...
最佳答案
[I,J,S]=find(A);
result=sortrows([I,J,S],-3);
关于matlab - 获取在 matlab 稀疏矩阵中按降序排序的前 N 个值的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21506894/