我如何找到矩阵的最大值(或最小值)的指标?

11,971次(过去30天)
“查找”命令仅返回矩阵的所有非零元素的索引。我想知道如何找到最大(或最小)值的索引。

接受答案

MathWorks支金宝app持团队
MathWorks支金宝app持团队 2020年11月12日
编辑:MathWorks支金宝app持团队 2020年11月12日
MATLAB中的“min”和“max”函数分别返回最小值和最大值的索引,作为可选的第二个输出参数。
例如,下面的代码生成一个行向量'M',其中包含' a '的每一列的最大值,即第一列为3,第二列为4。此外,'I'是一个包含行位置3和4的行向量,它们是2和2,因为这两列的最大值都在第二行。
A = [1 2;3 4];
[M,我]= max ()
有关“min”和“max”函数的更多信息,请参阅下面列出的文档页面:
要查找出现最大值(整个矩阵)的所有位置的索引,您可以使用“查找”功能。
最大= max(max(a));
[x,y] =查找(a ==最大)
4评论
塞吉奥诺维初级
塞吉奥诺维初级 2020年6月5日
奥斯卡,它将取决于您的申请。例如,假设您正在寻找最终速度最高的汽车。您发现有两辆汽车具有最佳结果。您可以选择最低价格的汽车。

登录评论。

更多的答案(10)

Shakir Kapra.
Shakir Kapra. 2015年4月20日
编辑:Shakir Kapra. 2015年4月20日
[M,我]= min ()
在哪里m - 是最小值
I -是最小值的索引
类似的这对麦克斯很有效

安德鲁•特谢拉
安德鲁•特谢拉 2019年10月1日
怎么样:
a =魔术(5);
[amins,Idx] = min(a);
[Amin, Aj] = min(Amins);
Ai = idx (Aj);
你的最终矩阵最小值位于[Ai, Aj]


Juanith霍奇金淋巴瘤
Juanith霍奇金淋巴瘤 2019年10月8日
A = [8 2 4;7 3 9)
[M,I] = max(A(:)) %I是索引最大值这里你可以将函数改为max或min
[I_row, I_col] = ind2sub(size(A),I) %I_row是行索引,I_col是列索引
1评论
马丁Grden
马丁Grden 2020年10月12日
像这样最好的。它应该比两次遍历矩阵的那些更有效。

登录评论。


安库尔库马尔
安库尔库马尔 2017年9月19日
用它作为一个函数,类型为[x,y]=minmat(a)来得到矩阵的最小值的位置。例如:
> > =魔法(5)
> > [a, b] = minmat (a)
一个=
1
B =
3.
将其保存为base文件夹中的函数并使用它。
函数[a,b] = minmat(c)
=大小(c);
total_ele =元素个数(c);
[~,我]= min (c (:));
r = rem(i,as(1));
a = r;
b =((我)/ (1))+ 1;
如果= = 0
一个= (1);
b = b - 1;
其他的
a = r;
b = b;
结束
结束
4评论
史蒂文的主
史蒂文的主 在2020年9月6日
一旦您将此代码存储在名为minmat的文件中。米(见 这个文档页面 对于定义函数的基础),您可以像调用任何其他MATLAB函数一样调用它(如 此其他文档页面 .)

登录评论。


鲁斯
鲁斯 2018年5月10日
编辑:鲁斯 2018年5月10日
//www.tatmou.com/matlabcentral/answers/100813-how-do-i-find-the-indices-of-the-maximum-or-minimum-value-of-my-matrix#answer_282157
这显然解决了您的问题,但是对于未来的参考,我想提一下,有一个无法涉及声明函数的奖励解决方案。
让我们继续使用任何矩阵A.第一步是找到完整矩阵的最小值:
最小= min(min(a));
双最小值需要首先找到所有列的最小值,然后找到所有这些最小值的最小值。(可能也有更简单的方法)。
找到这个值的索引可以这样做:
(x, y) =找到(=最低);
2行比完整功能更容易。
2的评论
斯坦利谭
斯坦利谭 2020年10月16日
上图: (x, y) =找到(=最低);
"="应替换为"==",即[x,y]=find(A == minimum);

登录评论。


Konstantinos Fragkakis
Konstantinos Fragkakis 2018年8月27日
编辑:Konstantinos Fragkakis 2018年8月27日
函数在多维数组中计算最小值及其索引—为了找到最大值,只需将min(array(:))语句替换为max(array(:))。
函数[最小,索引]= minmat(数组)
%函数:在多维数组中计算最小值及其索引
%--------逻辑描述--------
首先,确定为多维数组元素编号的Matlab约定。
% First是第一个维度的所有元素
%然后是第二个的,依此类推
%在每次迭代中,将标识最小值的数字与所研究的维度进行分割
%余数是这个维度的索引(检查下面的特殊情况)
Integer是标识最小值的“新号码”,用于用于下一个循环
%重复多次的步骤作为尺寸的数量(例如,2×3×4-5表,重复4次)
neldim =大小(数组);%每个维度的长度
ndim =长度(neldim);%尺寸数
[最小,i] = min(阵列(:));
剩余= 1;%计数器评估尺寸的末端
指数= [];%初始化指数
剩下的~ = ndim + 1在对最后一个维度的循环求值后中断
%划分整数,每个维度的值 - >标识整数所属的组
快速眼动(r =我neldim(剩余));%剩余部分标识正在评估的维度的索引
int =修复(I / neldim(剩余));%整数是必须用于下一次迭代的数字
如果r == 0.作为“组”的最后一个元素的补偿——> It索引等于在评估下的维度
new_index = neldim(剩余的);
其他的%补偿组的数量 - >增加1(例如,如果剩余8/3 = 2和整数= 2,则意味着您在第二个位置的2 + 1组)
int = int + 1;
new_index = r;
结束
int I =;%调整除法的新数字。这是第th组
index = [index new_index];%在末尾添加当前索引
剩余=剩余+ 1;
结束
结束

萨玛萨因
萨玛萨因 2020年5月2日
[row,col]=find(matrix_name == min(matrix_name))返回矩阵中每一列的最小值的索引

11日SUNDRIYAL
11日SUNDRIYAL 2020年5月18日
] = max ( ___ 的最大值返回对应于操作维度的索引 一个 对于前面的任何语法。
在此,M将表示并保持最大值,而iWill保存最大值的索引
通过使用min()函数obn,您可以使用相同的方法来查找最小值及其索引
例子:
A = [1 9 -2;8 4 5]
[M,我]= max ()
输出:
M = 1×3
8 9 2
我= 1×3
2 1 1

hazoor ahmad.
hazoor ahmad. 2021年2月28日
编辑:hazoor ahmad. 2021年2月28日
a = randi(45,5)
(先生,mir) = min ()
[MC,MIC] = min(MR)
(米尔(mic)、麦克风)

社区宝藏狩猎

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!