查找按升序排序的矩阵的列和行索引

时间:2017-03-20 12:30:19

标签: arrays matlab sorting matrix

我想在Matlab中解决以下任务: 如果我有一般的矩阵A,即:

A = [
1, 10, 8;
2, 2, 4;
3, 4, 50];

从最小值到最大值的值为:

1: pos. (1,1)
2: pos. (2,1)
2: pos. (2,2)
3: pos. (3,1)
4: pos. (2,3)
4: pos. (3,2)
...

因此该函数的输出将是两个向量:

x = [1,2,2,3,2,3,...];
y = [1,1,2,1,3,1,...];

对应于矩阵A的最小值的行和列索引。

提前致谢!

1 个答案:

答案 0 :(得分:3)

您需要将sortind2sub结合使用:

[vals,linpos] = sort(A(:))
[x,y] = ind2sub(size(A),linpos)
vals.' =  1     2     2     3     4     4     8    10    50
x.'    =  1     2     2     3     3     2     1     1     3
y,'    =  1     1     2     1     2     3     3     2     3

您所需输出的差异是由输入数据中多次出现的相同数字引起的。如果这很重要,请指定应该应用的规则。