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 ;
[C, ind] = min(featureDist);
The vector is like:
featureDist =
Columns 1 through 8
48.4766 47.3743 59.5736 59.7450 55.0489 58.2620 63.3865 50.1101
and so on...
vector<int> vec = {4,5,0,1,2,3} ; int min_element_index = min_element(vec. begin(), vec. end()) - vec. begin();
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With