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

时间:2013-03-07 17:11:23

标签: matlab matrix

假设我有一个矩阵

A=[2 3 4; 6 1 2]

我想找到2个最大的元素,并使所有其他元素为零。 在这种情况下,A最终成为

A=[0 0 4; 6 0 0]

2 个答案:

答案 0 :(得分:2)

你的行动应该是:

  1. 按降序对矩阵排序,并获取已排序元素的索引顺序。
  2. 弃掉前两个索引并使用其余索引将A中的相应元素归零。
  3. 实施例

    A = [2 3 4; 6 1 2];
    [Y, idx] = sort(A(:), 'descend')
    A(idx(3:end)) = 0
    

    这应该导致:

    A =
         0     0     4
         6     0     0
    

答案 1 :(得分:1)

>> A=[2 3 4; 6 1 2]
A =
     2     3     4
     6     1     2
>> [~,idx] = sort(A(:), 'descend');
>> A(idx(3:end))=0
A =
     0     0     4
     6     0     0