How to find the index of the n smallest elements in a vector

后端 未结 2 1649
谎友^
谎友^ 2020-11-30 07:43

How can I get the indices of \"n smallest elements\" in a 1D array in MATLAB?

The array is a row vector.

I can find the smallest element and its index using

相关标签:
2条回答
  • 2020-11-30 08:27

    I know this is an extremely late reply but I am hoping to help anyone who may have this question later.

    If A is the array of elements, yu could try using the find function to determine the index of the n smallest elements.

    [~, idx] = find(A > -Inf, n, 'first')

    To determine the n largest elements,

    [~, idx] = find(A < Inf, n, 'last')

    0 讨论(0)
  • 2020-11-30 08:42

    You can use the sort function. To get the smallest n elements, you can write a function like this:

    function [smallestNElements smallestNIdx] = getNElements(A, n)
         [ASorted AIdx] = sort(A);
         smallestNElements = ASorted(1:n);
         smallestNIdx = AIdx(1:n);
    end
    

    Let's try with your array:

    B = [48.4766 47.3743 59.5736 59.7450 55.0489 58.2620 63.3865 50.1101];
    [Bsort Bidx] = getNElements(B, 4);
    

    returns

    BSort = 
        47.3743   48.4766   50.1101   55.0489
    Bidx = 
        2 1 8 5
    
    0 讨论(0)
提交回复
热议问题