如何在MATLAB中的1D数组中获得“n个最小元素”的索引?
数组是行向量。
我可以使用
找到最小的元素及其索引[C, ind] = min(featureDist);
矢量就像:
featureDist =
Columns 1 through 8
48.4766 47.3743 59.5736 59.7450 55.0489 58.2620 63.3865 50.1101
依旧......
答案 0 :(得分:22)
您可以使用sort
功能。要获得最小的n个元素,可以编写如下函数:
function [smallestNElements smallestNIdx] = getNElements(A, n)
[ASorted AIdx] = sort(A);
smallestNElements = ASorted(1:n);
smallestNIdx = AIdx(1:n);
end
让我们试试你的阵列:
B = [48.4766 47.3743 59.5736 59.7450 55.0489 58.2620 63.3865 50.1101];
[Bsort Bidx] = getNElements(B, 4);
返回
BSort =
47.3743 48.4766 50.1101 55.0489
Bidx =
2 1 8 5
答案 1 :(得分:-1)
我知道这是一个非常晚的回复,但我希望能帮助那些可能在以后提出这个问题的人。
如果A是元素数组,yu可以尝试使用find函数来确定n个最小元素的索引。
[〜,idx] = find(A> -Inf,n,' first')
确定n个最大元素
[〜,idx] = find(A< Inf,n,' last')