首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何让MATLAB在二维数组中显示最小值的索引?

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

Stack Overflow用户
提问于 2011-02-22 18:08:06
回答 4查看 87.7K关注 0票数 18

我正在尝试用MATLAB编写一个脚本,它可以找到二维数组的最小值的位置。我确定这个数组中只有1个最小值,所以在数组中有多个位置具有相同的最小值不是问题。我可以找到数组的最小,但是在30x30的数组中,我想知道最小值在哪一行和哪一列。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-02-22 18:26:09

作为另一种选择,结合min来获得最小值,使用find来返回索引,如果你已经计算了最小值,那么只需使用find即可。

代码语言:javascript
复制
>> a=magic(30);
>> [r,c]=find(a==min(min(a)))

r =
     1
c =
     8

或者,根据您希望如何使用位置信息,您可能希望使用逻辑数组来定义它,在这种情况下,可以使用逻辑寻址来为您提供真值表。

代码语言:javascript
复制
>> a=magic(30);
>> locn=(a==min(min(a)));
票数 28
EN

Stack Overflow用户

发布于 2011-02-22 18:13:17

请看min函数的描述。它可以返回最小值,也可以返回索引。对于二维数组,只需调用两次即可。

代码语言:javascript
复制
A = rand(30); % some matrix
[minColVal, minColIdx] = min(A);
[minRowVal, minRowIdx] = min(minColVal);

minVal = minRowVal;
minValIdx = [minColIdx(minRowIdx), minRowIdx];

编辑:@b3的解决方案在计算上可能更优雅(更快,需要更少的临时空间)

票数 7
EN

Stack Overflow用户

发布于 2013-04-13 07:09:14

要在向量的子集中找到最小或最大值-如果A是一个向量,"lowerBound“和"upperBound”是需要在其中找到最大(或最小)值的向量的边界,则使用此命令-

代码语言:javascript
复制
[Value,Index]=min(A(lowerBound:upperBound));

这将返回" value“作为A(lowerBound)和A(uppedBound)之间的最小值或最大值,返回"Index”作为偏移量"lowerBound“。因此,要找到绝对索引,需要将"lowerBound“添加到索引中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5076733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档