我对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...
答案 0 :(得分:2)
[I,J,S]=find(A);
result=sortrows([I,J,S],-3);