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

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

公认的答案

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”函数的更多信息,请参阅下面列出的文档页面:
要查找(整个矩阵的)最大值出现的所有位置的索引,可以使用“查找”功能。
最大值=最大值(最大值(A));
[x,y]=查找(A==最大值)
4评论
塞吉奥诺维初级
塞吉奥诺维初级 2020年6月5日
奥斯卡,这取决于你的申请。例如,假设您正在寻找最终速度最高的汽车。你会发现有两辆车的效果最好。你可以选择价格最低的车。

登录以发表评论。

更多的答案(10)

夏奇尔·卡普拉
夏奇尔·卡普拉 2015年4月20日
编辑:夏奇尔·卡普拉 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是列索引

安库尔·库马尔
安库尔·库马尔 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。第一步是找到完整矩阵的最小值,包括:
最小值=最小值(最小值(A));
双最小值需要首先找到所有列的最小值,然后找到所有这些最小值的最小值。(可能也有更简单的方法)。
找到这个值的索引可以这样做:
(x, y) =找到(=最低);
两行比一个完整的函数更容易。
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是第一个维度的所有元素
%然后是第二个的,依此类推
%在每次迭代中,将标识最小值的数字与所研究的维度进行分割
%余数是这个维度的索引(检查下面的特殊情况)
%整数是标识最小值的“新数字”,用于下一个循环
%重复步骤的次数与尺寸数量相同(例如,对于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;
新的_指数=r;
结束
int I =;%调整除法的新数字。这是第th组
索引=[index new_index];%在末尾添加当前索引
剩余=剩余+ 1;
结束
结束

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

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

哈祖尔·艾哈迈德
哈祖尔·艾哈迈德 2021年2月28日
编辑:哈祖尔·艾哈迈德 2021年2月28日
A=randi(45,5)
(先生,mir) = min ()
[mc,mic]=分钟(mr)
(米尔(mic)、麦克风)

社区寻宝

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

开始打猎吧!