2017-03-20 74 views
2

我想在Matlab解决这个以下任务: 如果我有一个通用矩阵A,即:查找升序排列矩阵的列和行索引

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

的从分钟值Max是:

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的最小值的行和列索引。

在此先感谢!

回答

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 

的差异给你想要的输出是由相同数量的多次出现在你的输入数据而引起的。如果这很重要,请指定应该应用的规则。

+0

如果出现多个出现,则不应应用规则。所以你的答案是解决方案!非常感谢你 –