13

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

等々...

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 が要素の配列である場合、find 関数を使用して n 個の最小要素のインデックスを決定できます。

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

n 個の最大要素を決定するには、

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

于 2015-09-03T03:48:20.020 に答える