bindgen : 创建一个字节型数组,数值等于其序号,如[0,1,2,3,......]。
bytarr : 创建一个字节型数组,每个元素的初始值为0。
cindgen : 创建一个复数型数组,实部数值等于其序号。
complexarr: 创建一个复数性数组,实部和虚部数值都等于0。
dblarr : 创建一个双精度型数组,每个元素的初始值为0。
dcindgen : 创建一个双精度复数数组,实部数值等于其序号。
dcomplexarr : 创建一个双精度复数数组,每个元素的初始值为0。
dindgen : 创建一个双精度数组,每个元素数值等于其序号。
findgen : 创建一个浮点型数组,每个元素数值等于其序号。
fltarr : 创建一个浮点型数组,每个元素的初始值为0。
identity : 创建一个恒等数组,对角线上的元素为1 ,其他元素为0。例如a = indentity(4) 那么a =
1.00000 0.000000 0.000000 0.000000
0.000000 1.00000 0.000000 0.000000
0.000000 0.000000 1.00000 0.000000
0.000000 0.000000 0.000000 1.00000
indgen : 创建一个整型数组,每个元素数值等于其序号。
intarr : 创建一个整型数组,每个元素的初始值为0。
L64INDGEN :创建一个64字节整型数组,每个元素数值等于其序号。
LINDGEN :创建一个长整型数组,每个元素数值等于其序号。
lon64arr : 创建一个64字节整型数组,每个元素的初始值为0。
lonarr : 创建一个长整型数组,每个元素的初始值为0。
make_arry : 创建一个给定数据类型,维数和初始值的数组。
objarr : 创建一个对象数组。
ptrarr : 创建一个指针型数组。
replicate : 创建一个数组,给定维数和数值。
sindgen : 创建一个字符串数组,每个元素等于其序号。
strarr : 创建一个字符串数组,初始每个元素的长度为0。
timegen : 创建一个双精度浮点型数组,每个元素表示儒略日期。
uindgen : 创建一个无符号整型数组,每个元素等于其序号。
uintarr : 创建一个无符号整型数组,每个元素的初始值为0。
ul64indgen : 创建一个无符号64字节整型数组,每个元素等于其序号。
ulindgen : 创建一个无符号长整型数组,每个元素等于其序号。
ulon64arr : 创建一个无符号64字节整型数组,每个元素的初始值为0。
ulonarr :创建一个无符号长整型数组,每个元素的初始值为0。
1.赋值创建: 数组可以在IDL命令行中建立。建立一个两行三列的数组,如下所示:
IDL> array=[[1,2,3],[4,5,6]]
IDL> IDL> help,array
ARRAY INT= Array[3, 2]
2.函数创建
2.1创建全零和索引数组
1. 特定函数
可以用IDL的特定函数进行全零数组或索引数组的创建,
|
例如,创建100×100初始值为零的字节型数组,输入:
IDL>array=BytArr(100,100)
创建一个有100个元素的浮点型矢量,初始数值为从0到99,输入:
IDL>vector=FIndGen(100)
2.常规函数
MAKE_ARRAY()函数
调用格式为Result = MAKE_ARRAY ( [D1 [, ..., D8]] [, 关键字] [, /INDEX] [, DIMENSION = vector] [, /NOZERO] [, SIZE=vector] [, TYPE=type_code][, VALUE=value] )
通过关键字的控制可以实现表2-1的函数的功能。
M = MAKE_ARRAY(3, 4, /INTEGER, VALUE = 5)
IDL> help,m
M INT = Array[3, 4]
IDL> print,m
5 5 5
5 5 5
5 5 5
5 5 5
2.2创建特殊数组
1.RANDOMU()函数
RANDOMU函数返回一个或多个均匀分布的浮点型数组,元素值在[0,1]之间。
Result = RANDOMU( Seed [, D1 [, ..., D8]] [ [, BINOMIAL=[trials, probability]] [, /DOUBLE] [, GAMMA=integer{>0}] [, /NORMAL] [, POISSON=value] [, /UNIFORM] | [, /LONG] ] )
通过关键字的控制可以随机生成满足条件的随机数。
2.RANDOMN()函数
RANDOMN函数返回一个或多个正态分布的浮点型数组,这些数的平均为零,标准偏差为1 。
Result = RANDOMN( Seed [, D1 [, ..., D8]] [ [, BINOMIAL=[trials, probability]] [, /DOUBLE] [, GAMMA=integer{>0}] [, /NORMAL] [, POISSON=value] [, /UNIFORM] | [, /LONG] ] )
通过关键字的控制可以随机生成满足条件的随机数。
使用数组
1.数组的存储
IDL中的矢量和数组均是以行顺序存储的(IDL最初是设计用来处理行扫描的卫星数据),而且注意,下标的顺序先是列标,后是行标。这正好与已习惯的线性代数中的矩阵或行列式相反(下标值的起始值是0)
1.1一维数组的存储
一维数组arr[m]的存储方式:
arr[0] → arr[1] →… → arr[m-1]
1.2二维数组的存储
m*n的二维数组arr[m,n]的存储方式:
arr[0,0] → arr[1,0] → arr[2,0]…arr[m-1,0] →
arr[0,1] → arr[1,1] → arr[2,1]…arr[m-1,1] →
…
arr[0,n-1] → arr[1, n-1] → arr[2, n-1]…arr[m-1, n-1]
IDL> array = indgen(4,3)
IDL> print,array
0 1 2 3
4 5 6 7
8 9 10 11