Matlab 如何求向量中n个最小元素的索引

Matlab 如何求向量中n个最小元素的索引,matlab,Matlab,如何在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 等等…您可以使用该功能。要获得最小的n个元素,可以编写如下函数: func

如何在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
等等…

您可以使用该功能。要获得最小的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我认为这不管用。您的代码返回向量中的第一个/最后一个“n”元素,而不是所需的最小/最大的“n”元素