How to get MATLAB to display the index of the minimum value in a 2D array?
我正在尝试在MATLAB中编写一个脚本,该脚本查找2D数字数组的最小值的位置。我确定此数组中只有1个最小值,因此在数组中具有多个具有相同最小值的位置不是问题。我可以找到数组的最小值,但是在30x30的数组中,我想知道最小值所在的行和列。
作为替代版本,将min组合以获取最小值并查找以返回索引,如果您已经计算出最小值,则只需使用find。
或者根据您想如何使用位置信息,您可能希望改为使用逻辑数组来定义它,在这种情况下,可以使用逻辑寻址为您提供真值表。
您可以将矩阵重整为向量,使用MIN找到最小值的索引,然后将此线性索引转换为矩阵索引:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
查看min函数的描述。它可以返回最小值以及索引。对于二维数组,只需调用两次即可。
1 2 3 4 5 6 |
编辑:@ b3的解决方案在计算上可能更优雅(更快,并且需要更少的临时空间)
使用内联函数的替代解决方案将起作用。
1 2 3 4 5 6 7 8 9 10 |
要查找向量子集中的最小值或最大值-
如果A是一个向量,而" lowerBound"和" upperBound"是该向量的边界,则需要在其中找到最大值(或最小值),然后使用此命令-
1 |
这将返回"值"作为A(lowerBound)和A(uppedBound)之间的最小值或最大值,并且
"索引"与" lowerBound"一样,作为偏移量。因此,要找到绝对索引,您需要在索引中添加" lowerBound"。