13

如何在 MATLAB 的一维数组中获取“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

等等...

4

2 回答 2

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
于 2013-01-03T14:27:53.550 回答
-1

我知道这是一个非常晚的回复,但我希望能帮助以后可能有这个问题的任何人。

如果 A 是元素数组,yu 可以尝试使用 find 函数来确定 n 个最小元素的索引。

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

要确定 n 个最大的元素,

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

于 2015-09-03T03:48:20.020 回答