如何使MATLAB在二维数组中显示最小值的索引?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (76)

我试图用MATLAB编写一个脚本来找到一个二维数组的最小值的位置。我确信这个数组中只有一个最小值,因此在数组中有多个具有相同最小值的位置不是问题。我能找到最小值,但是在30x30数组中,我想知道最小值在哪一行和哪一列。

提问于
用户回答回答于

作为替代版本,将min合并到获取最小值并找到返回索引,如果你已经计算了最小值,那么只需使用find。

>> a=magic(30);
>> [r,c]=find(a==min(min(a)))

r =
     1
c =
     8

或者取决于你想要如何使用位置信息,你可能需要用逻辑数组来定义它,在这种情况下,可以使用逻辑寻址来给出真值表。

>> a=magic(30);
>> locn=(a==min(min(a)));
用户回答回答于

你可以将矩阵重构为向量,然后使用以下方法找到最小值的索引。然后将这个线性索引转换为矩阵索引:

>> x = randi(5, 5)

x =

     5     4     4     2     4
     4     2     4     5     5
     3     1     3     4     3
     3     4     2     5     1
     2     4     5     3     5

>> [value, index] = min(reshape(x, numel(x), 1));
>> [i,j] = ind2sub(size(x), index)

i =

     3


j =

     2

扫码关注云+社区