我有一个与此处解决的问题非常相似的问题:

获取矩阵中n个最大元素的索引

但是,此解决方案将矩阵转换为数组,然后根据新数组给出索引。

我想要最大(和最小)n值的原始矩阵的行和列索引。

===============>>#1 票数:3 已采纳

如果您采用该问题的解决方案来查找5个最大唯一值

sortedValues = unique(A(:));          %# Unique sorted values
maxValues = sortedValues(end-4:end);  %# Get the 5 largest values
maxIndex = ismember(A,maxValues);     %# Get a logical index of all values
                                      %#   equal to the 5 largest values

将为您提供匹配的那些值的逻辑矩阵。 您可以使用find获得它们的索引,然后使用ind2sub将它们转换回坐标。

idx = find(maxIndex);
[x y] = ind2sub(size(A), idx);

根据评论,一种替代方案:

[foo idx] = sort(A(:), 'descend'); %convert the matrix to a vector and sort it
[x y] = ind2sub(size(A), idx(1:5)); %take the top five values and find the coords

注意:上述方法不会消除任何重复的值,例如,如果您有两个具有相同值的元素,则它可能会返回两个元素,或者如果它们在边界上,则仅返回两个元素之一。

  ask by Bazman translate from so

未解决问题?本站智能推荐:

4回复

获取矩阵中n个最大元素的索引

假设我有以下矩阵: 我想要前5个元素的索引(在这种情况下,32,13,12,11,10)。 在MATLAB中最干净的方法是什么?
1回复

在Matlab中按“最大元素”对矩阵的列进行排序

在Matlab中,如何按给定列中的最大元素按升序对矩阵列进行排序。 例如,给定矩阵A = [1300 5; 100 1 2; 2 200 7],我想输出A = [300 1 5; 1100 2; 200 2 7]。 我可以使用for循环来执行此操作,但是我一直在寻找应该在ma
2回复

获取列中3个最大元素的行值

我是Matlab的初学者,以前没有经验。 因为没有其他选择,所以现在才开始使用它。 假设我有一个12行155列的矩阵。 我想遍历各列,在途中对每一列进行排序。 我发现了从矩阵中取出N个最大元素的各种方法,但是对我来说重要的不是元素的值,而是元素最初出现在其中的行索引。 例如:
1回复

仅将具有最大元素的矩阵行保持在间隔内

我有一个矩阵,其中最右边的元素以降序重复YYYYMMDD日期,例如: 在每个日期内,我只想保留与最左列中最大元素相对应的行。 所以我想产生一个新的矩阵: 做这个的最好方式是什么? 想法:使用diff查找日期何时更改的索引,并使用for循环使用max来遍历间隔以查找正确的行
2回复

如何在数组中找到n个最大元素并使其他元素在matlab中为零? [重复]

这个问题已经在这里有了答案: 获取矩阵中n个最大元素的索引 4个答案 假设我有一个矩阵 我想找到2个最大的元素,并使所有其他元素为零。 在这种情况下,A最终变为
1回复

如何找到三个矩阵的每个最大元素作为新矩阵?

也许这个问题有点困惑,我将在下面举例说明。 假设我有一个相同大小的3个矩阵a , b , c 。 如何在所有三个矩阵中使用每个max元素获得新的矩阵max ? 我知道我可以像a>b一样创建逻辑矩阵,然后进行数学计算,计算出来,还有其他更有效的方法吗?
1回复

如何在矩阵中查找没有特定行的NaN元素的列的索引?

我有一个像这样的matrix1 : 我从用户那里获取将要使用的行索引。 我需要没有该行的NaN元素的列的索引。 然后,应将这些索引分配给一个向量。 这是我的代码: 例如,当rowindex = 3时, vector1应该为[1 2 4],但结果为[1 2 3]。 我该
4回复

找出给定行到末尾的最大元素

假设我有一个矩阵a和每列的给定行号列表: 现在我想分别从第1列第2:end行, 2:end和第2列第3:end行, 3:end ... ...和第5列第1:end行, 3:end找到最大值,是否有不使用for循环的方法? 我尝试a(b:end,:)但是对于每一列a(b:end,:)它都
1回复

如何在3D MATLAB矩阵中找到最大元素的位置?

我有一个大小为100 * 10 * 1344的3D Matlab矩阵。 我想找到矩阵最大元素的三个索引。 当我尝试使用命令find查找它时,我得到: 但是使用这些索引可以得到以下结果: 如何解决问题?
3回复

在matlab中获取第二个最大元素

我有一个数组,比如A = [ 3 5 6 7 ] 。 我知道我可以使用max(A)获得此数组的max(A) ,并返回7 ,但是如何在不排序或删除第一个最大值的情况下从此数组获得第二个max( 6 )?