序号
|
名称
|
|
功能说明
|
|
语法 & 举例
|
01
|
MAX
|
|
最大值。
----------------------------------------------------------------------------------
Result = MAX( Array [, Max_Subscript] [, /ABSOLUTE] [, DIMENSION=value] [, MIN=variable] [, /NAN] [, SUBSCRIPT_MIN=variable])
----------------------------------------------------------------------------------
◈ Max_Subscript:最大值对应的索引值,存在此变量中
◈ ABSOLUTE:去元素的绝对值进行比较
◈ MIN=variable:获取最小值
◈ SUBSCRIPT_MIN=variable:一维数组中的最小值的索引值
|
|
IDL> A = [3, 4, -5, -6, -3, 2, 1]
IDL> MAX(A)4
IDL> MAX(A, i_max)4
IDL> i_max1
IDL> MAX(A, /ABSOLUTE)-6
IDL> MAX(A, MIN=min)4
IDL> min-6
IDL> MAX(A, MIN=min, SUBSCRIPT_MIN=i_min)4
IDL> i_min3
|
02
|
MIN
|
|
最小值。
----------------------------------------------------------------------------------
Result = MIN( Array [, Min_Subscript] [, /ABSOLUTE] [, DIMENSION=value] [, MAX=variable] [, /NAN] [, SUBSCRIPT_MAX=variable])
----------------------------------------------------------------------------------
◈ Min_Subscript:最小值对应的索引值,存在此变量中
◈ ABSOLUTE:去元素的绝对值进行比较
◈ MAX=variable:获取最大值
◈ SUBSCRIPT_MAX=variable:一维数组中的最大值的索引值
|
|
IDL> A = [3, 4, -5, -6, -3, 2, 1]
IDL> MIN(A)-6
IDL> MIN(A, i_min)-6
IDL> i_min3
IDL> MIN(A, /ABSOLUTE)1
IDL> MIN(A, MAX=max)-6
IDL> max4
IDL> MIN(A, SUBSCRIPT_MAX=i_max)-6
IDL> i_max1
|
03
|
TOTAL
|
|
数组元素的总和。
----------------------------------------------------------------------------------
Result = TOTAL( Array [, Dimension] [, /CUMULATIVE] [, /DOUBLE] [, /INTEGER] [, /NAN] [, /PRESERVE_TYPE] )
|
|
IDL> A = INDGEN(11)
IDL> TOTAL(A)55.000000
|
04
|
PRODUCT
|
|
数组元素总乘积。
----------------------------------------------------------------------------------
Result = PRODUCT(Array [, Dimension] [, /CUMULATIVE] [, /INTEGER] [, /NAN] [, /PRESERVE_TYPE] )
|
|
IDL> A = [1, 2, 3, 4, 5]
IDL> PRODUCT(A)120.00000000000000
|
05
|
REVERSE
|
|
数组反转。
----------------------------------------------------------------------------------
Result = REVERSE( Array [, Subscript_Index] [, /OVERWRITE] )
----------------------------------------------------------------------------------
◈ Subscript_Index:指定维度索引值(1、2、3等)的一个整数值,1 是对行进行反转,2 是对列进行反转
◈ IDL 从影像上读取的数组的原点在左上角,为了转换成符合正常顺序的数组可以对其进行列的反转,即 REVERSE(image, 2)
|
|
IDL> A = INDGEN(5)
IDL> A0 1 2 3 4
IDL> REVERSE(A)4 3 2 1 0
-------------------------------------------------------------------------------------
IDL> B = INDGEN(5, 2)
IDL> B0 1 2 3 45 6 7 8 9
IDL> REVERSE(B)4 3 2 1 09 8 7 6 5
IDL> REVERSE(B, 2)5 6 7 8 90 1 2 3 4
|
06
|
ROTATE
|
|
数组旋转。
----------------------------------------------------------------------------------
Result = ROTATE(Array, Direction)
----------------------------------------------------------------------------------
◈ Direction:旋转角度所对应的数值,1-顺时针90°,2-180°中心对称,3-逆时针90°
|
|
IDL> C = INDGEN(3, 3)
IDL> C0 1 23 4 56 7 8
IDL> ROTATE(C, 1)6 3 07 4 18 5 2
|
07
|
ROT
|
|
任意角度旋转。
----------------------------------------------------------------------------------
Result = ROT( A, Angle, [Mag, X0, Y0] [, /INTERP] [, CUBIC=value{-1 to 0}] [, MISSING=value] [, /PIVOT] )
----------------------------------------------------------------------------------
◈ Angle:顺时针旋转的角度值
|
|
IDL> C = INDGEN(3, 3)
IDL> C0 1 23 4 56 7 8
IDL> ROT(C, 90)2 5 81 4 70 3 6
|
08
|
SORT
|
|
排序,从小到大,返回索引数组。
----------------------------------------------------------------------------------
Result = SORT(Array [, /L64] )
|
|
IDL> A = [4, 3, 7, 1, 2]
IDL> SORT(A)3 4 1 0 2
IDL> A[SORT(A)]1 2 3 4 7
IDL> A[REVERSE(SORT(A))]7 4 3 2 1
IDL> REVERSE(A[SORT(A)])7 4 3 2 1
|
09
|
UNIQ
|
|
相邻唯一值,返回索引数组。
----------------------------------------------------------------------------------
Result = UNIQ( Array [, Index] )
----------------------------------------------------------------------------------
◈ Index:用于处理成递增、唯一的数组
|
|
IDL> array = [1, 2, 2, 5, 6, 6, 5]
IDL> UNIQ(array)0 2 3 5 6
IDL> array[UNIQ(array)]1 2 5 6 5
IDL> UNIQ(array, SORT(array))0 1 3 4
IDL> array[UNIQ(array, SORT(array))]1 2 5 6
|
10
|
REFORM
|
|
调整数组的维度,元素个数不变。
----------------------------------------------------------------------------------
Result = REFORM( Array, D1[, ..., D8] [, /OVERWRITE] )
----------------------------------------------------------------------------------
◈ Di:维度调整,保证元素个数相同,否则无法实现
◈ OVERWRITE:将返回的数组值赋值给 Array
|
|
IDL> A = INDGEN(2, 3)
IDL> A0 12 34 5
IDL> REFORM(A, 3, 2)0 1 23 4 5
IDL> REFORM(A, 3, 2, /OVERWRITE)0 1 23 4 5
IDL> A0 1 23 4 5
|
11
|
REPLICATE_INPLACE
|
|
更新一个数组中一部分或者全部为指定的数值。
----------------------------------------------------------------------------------
REPLICATE_INPLACE, Array, Value [, D1, Loc1 [, D2, Range]]
----------------------------------------------------------------------------------
◈ Value:欲更新的数值
◈ D1:欲更新的维度,1 为行,2 为列
◈ Loc1:坐标点所在行或列
----------------------------------------------------------------------------------
等效替换方法如下:
Array[*] = Value:数列都赋值 Value
Array[*, 1] = Value:整个第二行都赋值 Value
Array[*, 2:4] = Value:整个第三行到第五行都赋值 Value
|
|
IDL> A = INDGEN(3, 3)
IDL> A0 1 23 4 56 7 8
IDL> REPLICATE_INPLACE, A, 4
IDL> A4 4 44 4 44 4 4
IDL> A[*] = 5
IDL> A5 5 55 5 55 5 5
IDL> A[*, 2] = 0
IDL> A5 5 55 5 50 0 0
IDL> REPLICATE_INPLACE, A, 4, 1, [1, 1]
IDL> A5 5 54 4 40 0 0
IDL> REPLICATE_INPLACE, A, 8, 2, [0, 0]
IDL> a8 5 58 4 48 0 0
|
12
|
WHERE
|
|
返回符合条件的数组。
----------------------------------------------------------------------------------
Result = WHERE( Array_Expression [, Count] [, COMPLEMENT=variable] [, /L64] [, NCOMPLEMENT=variable] [, /NULL] )
----------------------------------------------------------------------------------
◈ Array_Expression:数组表达式
◈ Count:返回数组的元素个数
◈ COMPLEMENT=variable:返回剩余数组中元素的索引数组
◈ NCOMPLEMENT=variable:返回剩余数组中元素的个数
|
|
IDL> A = INDGEN(10)
IDL> A0 1 2 3 4 5 6 7 8 9
IDL> WHERE(A GT 5, count, COMPLEMENT=c, NCOMPLEMENT=count_c)6 7 8 9
IDL> c0 1 2 3 4 5
IDL> count_c6
|
13
|
SIZE
|
|
返回值是数组,分别表示维度、列、行、类型、个数。
----------------------------------------------------------------------------------
Result = SIZE( Expression [, /L64] [, /DIMENSIONS | , /FILE_LUN | , /FILE_OFFSET | , /N_DIMENSIONS | , /N_ELEMENTS | , /SNAME, | , /STRUCTURE | , /TNAME | , /TYPE] )
----------------------------------------------------------------------------------
◈ DIMENSIONS:列、行等
◈ N_DIMENSIONS:维度
◈ N_ELEMENTS:元素个数
◈ TNAME:数据类型,文本型
◈ TYPE:数据类型,数字码
|
|
IDL> A = INDGEN(5,5)
IDL> SIZE(A)2 5 5 2 25
IDL> SIZE(A, /N_ELEMENTS)25
IDL> SIZE(A, /DIMENSIONS)5 5
IDL> SIZE(A, /N_DIMENSIONS)2
IDL> SIZE(A, /TYPE)2
IDL> SIZE(A, /TNAME)
INT
|
14
|
INDGEN
|
|
返回指定维度的数组。
----------------------------------------------------------------------------------
Result = INDGEN(D1[, ..., D8] [, /BYTE | , /COMPLEX | , /DCOMPLEX | , /DOUBLE | , /FLOAT | , INCREMENT=value | , /L64 | , /LONG | , /STRING | , /UINT | , /UL64 | , /ULONG] [, START=value] [, TYPE=value] )
----------------------------------------------------------------------------------
◈ Di:数组维度定义
◈ BYTE:创建 byte 数组
◈ DOUBLE:创建 double 数组
◈ FLOAT:创建 float 数组
◈ INCREMENT=value:定义增量步长
◈ START=value:开始整数设置,默认是 0
◈ TYPE=value:数据类型数字码(SIZE)
|
|
IDL> INDGEN(5, INCREMENT=3)0 3 6 9 12
IDL> INDGEN(5, INCREMENT=3, START=10)10 13 16 19 22
IDL> INDGEN(5, INCREMENT=3, START=10, TYPE=4)10.000000 13.000000 16.000000 19.000000 22.000000
IDL> INDGEN(5, /FLOAT, START=10)10.000000 11.000000 12.000000 13.000000 14.000000
|
15
|
FINDGEN & Others
|
|
返回指定维度的数组(浮点型)。
----------------------------------------------------------------------------------
Result = FINDGEN(D1 [, ..., D8] [, INCREMENT=value] [, START=value])
|
|
IDL> FINDGEN(5, START=1)1.0000000 2.0000000 3.0000000 4.0000000 5.0000000
|
|
BINDGEN:字节型
DINDGEN:双精度浮点型
LINDGEN:32位有符号长整型
L64INDGEN:64位有符号长整型
UINDGEN:16位无符号整形
SINDGEN:字符串
|
|
IDL> SINDGEN(5, START=5)56789
|
16
|
INTARR & Others
|
|
返回指定维度全是 0 的数组。
----------------------------------------------------------------------------------
Result = INTARR( D1[, ..., D8] [, /NOZERO] )
|
|
IDL> INTARR(3, 3)0 0 00 0 00 0 0
|
|
FLTARR:浮点型
BYTARR:字节型
DBLARR:双精度浮点型
LONARR:32位有符号长整型
LON64ARR:64位有符号长整型
UINTARR:16位无符号整形
STRARR:字符串
|
|
|
17
|
MAKE_ARRAY
|
|
动态创建数组。
----------------------------------------------------------------------------------
Result = MAKE_ARRAY ( [D1[, ..., D8]], DIMENSION=vector, INCREMENT=value, /INDEX, /NOZERO, SIZE=vector, START=value, TYPE=type_code, VALUE=value, /BOOLEAN, /BYTE, /COMPLEX, /DCOMPLEX, /DOUBLE, /FLOAT, /INTEGER, /L64, /LONG, /OBJ, /PTR, /STRING, /UINT, /UL64, /ULONG )
----------------------------------------------------------------------------------
◈ INCREMENT=value:增量步长
◈ INDEX:等差增加
◈ NOZERO:不出现0值,默认情况下是0值
◈ START=value:开始的数值
◈ TYPE=type_code:返回值的类型,0为Undefined、1为Byte、2为Int等
◈ VALUE=value:设置固定值
◈ BOOLEAN:设置一个布尔型数组
|
|
IDL> MAKE_ARRAY(4, 3, VALUE=5, /INTEGER)5 5 5 55 5 5 55 5 5 5
IDL> MAKE_ARRAY(4, 3, /INDEX, /INTEGER)0 1 2 34 5 6 78 9 10 11
IDL> MAKE_ARRAY(4, 3, /INDEX, INCREMENT=2, /INTEGER)0 2 4 68 10 12 1416 18 20 22
IDL> MAKE_ARRAY(4, 3, /INDEX, INCREMENT=2, START=5, /INTEGER)5 7 9 1113 15 17 1921 23 25 27
|
|
|
|
|
|
|