変形組込み関数 (総称):配列中のすべての要素,配列中の要素の組,または配列の指定された次元中の要素の最大値の位置を返します。
形式
result = MAXLOC (array [, dim] [, mask] [, kind] )
array
(入力) 整数型または実数型の配列。
dim
(省略可能,入力) n を array の次元数として,1 ~ n の範囲の値を持つスカラ整数。この引数は Fortran 95 の機能です。
mask
(省略可能,入力) array と形状適合する論理型配列。
kind
(省略可能,入力) スカラ整数初期値式。
結果
結果は基本整数型の配列です。kind が存在する場合,結果の種別パラメタは kind によって指定されたものになります。kind が存在しなければ,結果のの種別パラメタは基本整数型の種別パラメタになります。プロセッサーが結果の種別で結果の値を表現できない場合,結果は不定になります。
dim が省略された場合には,以下の規則が適用されます。
配列の結果は次元数 1 で,array の次元数に等しい大きさを持ちます。
MAXLOC (array) が宣言された場合,配列結果の要素は,array 中の最大値を含んでいる要素の位置の添字となっています。返される i 番目の添字は,array の i 番目の次元の寸法を ei として,1 ~ ei の範囲にあります。
MAXLOC (array, MASK=mask) が宣言された場合,配列結果の要素は,mask によって指定された条件に対応する最大値を含んでいる要素の位置の添字となっています。
dim が宣言された場合,以下の規則が適用されます。
配列結果の次元数は array よりも 1 だけ少ない値になり,その形状は,array の形状を (d1, d2, ..., dn) として,(d1, d2,...ddim-1, ddim+1,...dn) となります。
array の次元数が 1 の場合,MAXLOC (array, dim [,mask]) の値は,MAXLOC (array [,MASK = mask]) と等しくなります。それ以外の場合は,MAXLOC (array, dim [,mask]) の要素 (s1, s2, ..., sdim-1, sdim+1, ..., sn) の値は,MAXLOC (array (s1, s2, ..., sdim-1, :, sdim+1, ..., sn) [, MASK = mask (s1, s2, ..., sdim-1, :, sdim+1, ..., sn)]) と等しくなります。
最大値を持つ要素が複数存在する場合,配列要素順序で最初に現れる要素の添字が返されます。array の大きさがゼロの場合,または,mask のすべての要素が .FALSE. である場合,結果の値は不定です。
互換性
CONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS WINDOWS DLL LIB
関連情報
例
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