【发布时间】: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