web-dev-qa-db-ja.com

MATLABの配列で最大値とそのインデックスを見つけるにはどうすればよいですか?

a = [2 5 4 7]という配列があるとします。最大値とそのインデックスを返す関数は何ですか?

たとえば、私の場合、その関数は最大値として7を返し、インデックスとして4を返す必要があります。

32
Yusef Mohamadi

関数はmaxです。最初の最大値を取得するには、次を実行する必要があります

[val, idx] = max(a);

valは最大値で、idxはそのインデックスです。

68
Acorbe

マトリックスの場合、これを使用できます。

[M,I] = max(A(:))

Iは、最大の要素を含むA(:)のインデックスです。

次に、関数ind2subを使用して、最大要素に対応するAの行と列のインデックスを抽出します。

[I_row, I_col] = ind2sub(size(A),I)

ソース: https://www.mathworks.com/help/matlab/ref/max.html

11
Mohsen

2D配列(マトリックス)の場合、次を使用できます。

[val, idx] = max(A, [], 2);

Idx部分には、各行の最大要素を含む列番号が含まれます。

6
Rupal Sonawane

Max()を使用して、最大値を取得できます。 max関数は、ベクトルの最大値のインデックスを返すこともできます。これを取得するには、maxへの呼び出しの結果を、単一の変数ではなく2要素ベクトルに割り当てます。

例えばzは配列です。

>> [x, y] = max(z)

x =

7

y =

4

ここで、7は4番目の位置(インデックス)の最大数です。

4
bonCodigo

Dケース

3D配列に対するモーセンの答えを修正する:

[M,I] = max (A(:));
[ind1, ind2, ind3] = ind2sub(size(A),I)
4
user3804598

これは、マトリックスの最大値を返します

max(M1(:))

これにより、その値の行と列が返されます

[x,y]=ind2sub(size(M1),max(M1(:)))

最低限、Wordのmaxをminに交換するだけです。

0
oumarkh