我正在尝试在MATLAB中编写一个脚本,找到二维数组的最小值的位置.我确定此阵列中只有1个最小值,因此在阵列中具有相同最小值的多个位置不是问题.我能找到的最低值数组的,但在一个30×30阵列,我想知道哪些行和列最小值在不在.
Adr*_*ian 28
作为替代版本,将min组合以获得最小值并找到返回索引,如果您已经计算了最小值,则只需使用find.
>> a=magic(30);
>> [r,c]=find(a==min(min(a)))
r =
1
c =
8
Run Code Online (Sandbox Code Playgroud)
或者,根据您希望如何使用位置信息,您可能希望使用逻辑数组来定义它,在这种情况下,逻辑寻址可用于为您提供真值表.
>> a=magic(30);
>> locn=(a==min(min(a)));
Run Code Online (Sandbox Code Playgroud)
看一下min函数的描述.它可以返回最小值以及索引.对于二维数组,只需调用它两次.
A = rand(30); % some matrix
[minColVal, minColIdx] = min(A);
[minRowVal, minRowIdx] = min(minColVal);
minVal = minRowVal;
minValIdx = [minColIdx(minRowIdx), minRowIdx];
Run Code Online (Sandbox Code Playgroud)
编辑:@ b3的解决方案可能在计算上更优雅(更快,需要更少的临时空间)