如何在 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
等等...
如何在 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
等等...
您可以使用该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
我知道这是一个非常晚的回复,但我希望能帮助以后可能有这个问题的任何人。
如果 A 是元素数组,yu 可以尝试使用 find 函数来确定 n 个最小元素的索引。
[~, idx] = find(A > -Inf, n, 'first')
要确定 n 个最大的元素,
[~, idx] = find(A < Inf, n, 'last')