如何找到矩阵的最大(或最小)值的索引?

12020次浏览(过去30天)
'find'命令只返回矩阵中所有非零元素的索引。我想知道如何找到最大值(或最小值)的指标。

接受的答案

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

登录评论。

更多答案(10)

Shakir Kapra
Shakir Kapra 2015年4月20日
编辑:Shakir Kapra 2015年4月20日
[M,I]=min(A)
哪里M -是最小值
I-是最小值的索引
同样地这是最有效的

安德鲁·泰西拉
安德鲁·泰西拉 2019年10月1日
只是如何:
一个=魔法(5);
[Amins, idx] = min(A);
[Amin,Aj]=最小值(Amin);
Ai=idx(Aj);
最终矩阵极小值位于[Ai,Aj]的位置


胡安尼思酒店
胡安尼思酒店 2019年10月8日
A=[824;739]
[M,I]=max(A(:)%I是索引最大值tu可以将函数更改为max或min
[I_row,I_col]=ind2sub(size(A),I)%I_row是行索引,I_col是列索引

ANKUR库马尔
ANKUR库马尔 2017年9月19日
将其用作函数并键入[x,y]=minmat(a)以获取矩阵最小值的位置。例如:
>>A=魔术(5)
>>[a,b]=minmat(a)
a=
1.
b =
3.
将其另存为基本文件夹中的函数并使用它。
作用[a,b] = minmat(c)
as=尺寸(c);
总元素=numel(c);
[~,I]=min(c(:);
r =快速眼动(我作为(1));
= r;
b=((I-a)/as(1))+1;
如果a==0
a=as(1);
b=b-1;
其他的
= r;
b=b;
终止
终止
4评论
史蒂文·洛德
史蒂文·洛德 5 .卡特彼勒
将此代码存储在名为minmat.m的文件中后(请参阅 此文档页 对于定义函数的基础知识),您可以像调用任何其他MATLAB函数一样调用它(如所示) 这个文档页面 .)

登录评论。


鲁斯
鲁斯 2018年5月10日
编辑:鲁斯 2018年5月10日
//www.tianjin-qmedu.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));
需要双min来首先查找所有列的min,然后查找所有这些min值的min(可能还有更简单的方法)。
查找该值的索引可以这样做:
[x,y]=查找(A=最小值);
两行代码将比一个完整的函数更容易。
2评论
斯坦利Tam
斯坦利Tam 2020年10月16日
以上: [x,y]=查找(A=最小值);
“=”应替换为“=”,即[x,y]=find(A==最小值);

登录评论。


康斯坦蒂诺斯·弗拉卡基斯
编辑:康斯坦蒂诺斯·弗拉卡基斯 2018年8月27日
函数来计算多维数组中的最小值及其索引-为了找到最大值,只需将min(array(:)语句替换为max(array(:))。
作用[最小值,索引]=最小值(数组)
%函数:计算多维数组中的最小值及其索引
% --------逻辑描述--------
%首先,确定多维数组元素编号的Matlab约定。
%首先是第一个维度的所有元素
%然后是第二个,依此类推
%在每次迭代中,将标识最小值的数字除以正在调查的维度
%其余部分是此维度的索引(检查下面的特殊情况)
%整数是标识最小值的“新数字”,将用于下一个循环
%重复步骤的次数与维度的数量相同(例如,对于2 × 3 × 4 × 5的表格,重复4次)
neldim=大小(数组);%每个维度的长度
ndim =长度(neldim);%尺寸数
(至少我]= min(数组(:));
剩余= 1;%计数器来计算尺寸的末端
指数=[];%初始化索引
虽然剩余~=ndim+1%计算最后一个维度的循环后中断
%用每个维度的值分割这个整数——>标识这个整数属于哪个组
r=rem(I,neldim(剩余));%其余部分用于标识正在评估的维度的索引
int=固定(I/neldim(剩余));%整数是必须用于下一次迭代的数字
如果r = = 0%补偿成为“组”的最后一个元素-->它的指数等于被评估的维度
新指数=neldim(剩余);
其他的增加1(例如,如果余数8/3 = 2,整数= 2,这意味着你在2+1组的第二个位置)
int=int+1;
new_index = r;
终止
I=int;%调整分区的新编号。这是第四组
索引= [Index new_index];%在末尾追加当前索引
剩余=剩余+1;
终止
终止

萨马尔·沙欣
萨马尔·沙欣 2020年5月2日
[row,col]=find(matrix_name==min(matrix_name))返回矩阵中每个列中最小值的索引

希瓦姆桑德里亚尔酒店
[ M , ]=最大值( ___ ) 将索引返回到与最大值相对应的操作维度中 A. 对于任何先前的语法。
这里M表示并保存最大值,而i保存最大值的索引
通过使用min()函数bn,可以使用相同的方法来查找最小值及其索引
例子:
A=[19-2;84-5]
[M,I]=max(A)
输出:
M= 1×3
8 9 -2
我= 1×3
2 1 1

Hazoor艾哈迈德
Hazoor艾哈迈德 2021年2月28日
编辑:Hazoor艾哈迈德 2021年2月28日
A =兰迪(45岁,5)
[mr,mir]=min(A)
(mc,麦克风)= min(先生)
[和平号(麦克风),麦克风]

社区寻宝

在MATLAB Central中查找宝藏,了解社区如何帮助您!

开始狩猎!