MAXLOC

変形組込み関数 (総称):配列中のすべての要素,配列中の要素の組,または配列の指定された次元中の要素の最大値の位置を返します。

形式

result = MAXLOC (array [, dim] [, mask] [, kind] )

array
(入力) 整数型または実数型の配列。

dim
(省略可能,入力) narray の次元数として,1 ~ n の範囲の値を持つスカラ整数。この引数は Fortran 95 の機能です。

mask
(省略可能,入力) array と形状適合する論理型配列。

kind
(省略可能,入力) スカラ整数初期値式。

結果

結果は基本整数型の配列です。kind が存在する場合,結果の種別パラメタは kind によって指定されたものになります。kind が存在しなければ,結果のの種別パラメタは基本整数型の種別パラメタになります。プロセッサーが結果の種別で結果の値を表現できない場合,結果は不定になります。

dim が省略された場合には,以下の規則が適用されます。

dim が宣言された場合,以下の規則が適用されます。

最大値を持つ要素が複数存在する場合,配列要素順序で最初に現れる要素の添字が返されます。array の大きさがゼロの場合,または,mask のすべての要素が .FALSE. である場合,結果の値は不定です。

互換性

CONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS WINDOWS DLL LIB

関連情報

MAXVALMINLOCMINVAL

MAXLOC ((/3, 7, 4, 7/)) の値は,次元数 1 の配列の最大値が最初に現れる位置を表す添字である (2) です。

A が配列

	[  4    0   -3    2 ]
	[  3    1   -2    6 ]
	[ -1   -4    5   -5 ]

であるとします。

MAXLOC (A, MASK=A .LT. 5) は,5 よりも小さい最大値 (4) の位置を表す添字である値 (1, 1) を持ちます。

MAXLOC (A, DIM=1) の値は (1, 2, 3, 2) です。1 は列 1 の最大値 (4) の位置を表す添字,2 は列 2 の最大値 (1) の位置を表す添字です (以下同様)。

MAXLOC (A, DIM=2) の値は (1, 4, 3) です。1 は行 1 の最大値の位置を表す添字,4 は行 2 の最大値の位置を表す添字です (以下同様)。

以下に他の例を示します。

	INTEGER i, max
	INTEGER i, maxl(1)
	INTEGER array(3, 3)
	INTEGER, ALLOCATABLE :: AR1(:)
	! 配列に値を代入します。
	array = RESHAPE((/7, 9, -1, -2, 5, 0, 3, 6, 9/), &
			(/3, 3/))
	! 配列は  7 -2 3
	!         9  5 6
	!        -1  0 9 です。
	i = SIZE(SHAPE(array))		! 配列の次元を得ます。
	ALLOCATE ( AR1(i))		! AR1 を配列の次元数に割り当てます。
	AR1 = MAXLOC (array, MASK = array .LT. 7)
					! 配列で 7 より小さい
					! 最大の要素の場所 (添字)
					! を得ます。
	
	!
	! MASK = array .LT. 7 は,配列の対応する要素
	! が 7 より小さい時はその要素が .TRUE. で,
	! そうでない時はその要素が .FALSE. である配列
	! と同じ大きさで形状の配列選別を作成します。
	! この選別は,7 より小さい最大値を持つ配列の
	! 要素の添字を MAXLOC に返させるようにします。
	!
	! 配列は 7 -2 3 ;MASK=array .LT. 7 は F T T
	!        9  5 6                        F T T
	!       -1  0 9                        T T F
	! AR1 = MAXLOC(array, MASK = array .LT. 7) は
	! (2, 3) を返します。これは,値 6 を持つ要素の場所です。

	maxl = MAXLOC((/1, 4, 3, 4/))	! 2 を返します。
					! これは,最大値が最初に現れた場所です。
	END