2.2. 数组
IDL中可以为任何IDL数据类型创建1—8维的数组。数组操作的运行速度往往优于循环操作,且语法更为精炼。 在IDL中利用方括号“[ ]”创建数组。创建多维数组时可以使用嵌套的方括号。值的注意的是,IDL中数组元素的存储是按列进行的。按列存储的方式意味着连续的数组元素也将按顺序被存储,而且数组的第一维(列)变化的最快。下标的顺序先是列标,后是行标。IDL的数组下标是从零开始的正值。数组的下标可以是标量也可以是矢量。进行下标操作时,如果下标超过了范围,则该下标被转换为在允许范围内的最小或最大的下标值。例如,创建一维数组vector和多为数组array:
; 创建一维数组vector IDL> vector=[1,2,3] IDL> help,vector
VECTOR INT = Array[3] IDL> print,vector
; 输出IDL 输出窗口中将会如下所示: 1 2 3
; 创建多维数组array IDL> array=[[1,2,3],[4,5,6]] IDL> help,array
ARRAY INT = Array[3, 2] IDL> print, array 1 2 3 4 5 6
IDL的内建函数允许用户按指定的类型创建数组,同时数组中的每个元素都被初始化为灵活索引值(下标值)。创建和初始化零数组和索引数组的函数见表2所示。
表2 创建和初始化零数组和索引数组的函数
数据类型 byte int long long64 uint ulong ulong64
零数组 bytarr( ) intarr( ) lonarr( ) lon64arr( ) uintarr( ) ulonarr( ) ulon64arr( ) 索引数组 bindgen( ) indgen( ) lindgen( ) l64indgen( ) uindgen( ) ulindgen( ) ul64indgen( ) 5 float double complex dcomplex string fltarr( ) dblarr( ) Complex arr( ) Dcomplex arr( ) strarr( ) findgen( ) dindgen( ) cindgen( ) dcindgen( ) sindgen( )
例如,创建一个七元素的整型零数组和一个六元素的浮点型索引数组:
IDL> zeros=intarr(7) ; 创建一个七元素的整型零数组 IDL> index=findgen(6) ; 创建一个六元素的浮点型索引数组 IDL> print,zeros,index
0 0 0 0 0 0 0
0.000000 1.00000 2.00000 3.00000 4.00000 5.00000
3. IDL编程基础
结构化程序设计是 E.W.Dijikstra 在 1965 年提出的。它的主要观点是采用自顶向下、逐步求精的程序设计方法;使用三种基本控制结构构造程序,任何程序都可由顺序、选择、重复三种基本控制结构构造。编写 IDL 程序也需要对 IDL 中的相关控制语句进行简单介绍。
3.1. 定义和编译程序
IDL程序包括过程和函数两种:
(1). 过程(pro)
过程一般将几个相关的操作加到一个程序模块中。过程以pro开头,end结束。例如:
;过程名 test1, 参数 para1,para2,.. pro test1,para1,