摘要: 数组简介 IDL中数组的特点 在IDL中可以为任何IDL数据类型创建1-8维的数组。紧凑的数组语法能保证数组运行时不使用循环的操作。 另外,数组操作的优点将充分体现在运行速度上。用户可以发现, 将数组作为整体进行数组操作,其速度远远大于对数组元素的循环操作。在...
数组简介
IDL中数组的特点
在IDL中可以为任何IDL数据类型创建1-8维的数组。紧凑的数组语法能保证数组运行时不使用循环的操作。 另外,数组操作的优点将充分体现在运行速度上。用户可以发现, 将数组作为整体进行数组操作,其速度远远大于对数组元素的循环操作。在IDL中使用数组的两个最大优势体现在:
- 数组操作比循环操作快得多。
- 数组语法比相对的循环语法更加精练。
创建数组
在IDL中利用方括号“[]”创建数组。 例如, 创建一维数组, 数组的元素被括在方括号内:
IDL>x=[0,1,2,3,4] IDL>help,x X INT=Array[5] IDL>print,x 0 1 2 3 4
创建多位数组是可以使用嵌套的方括号:
IDL>x=[[0,1,2],[3,4,5],[6,7,8]] IDL>help,x X INT=Array[3,3] IDL>print,x 0 1 2 3 4 5 6 7 8
值可以附加到已经存在的数组中:
IDL>arr=[0,1,2,3,4] IDL>arr=[arr,5,6,78] IDL>print,arr 0 1 2 34 5 6 78
数组的存储格式
IDL中数组元素的存储是按列进行的, 这种存储方式与Fortran语言相同。 按列存储的方式意味着连续的数组元素也将按顺序被存储,而且数组的第一维(列)变化的最快。 这表明矢量和数组均是以行的顺序存储在IDL中的。 这一点在编写IDL程序的过程中非常重要,因为将经常用到IDL这种数据存储方式的优势。
创建数组
X=[0,1,2,3,4] ; 嵌入创建 vector=[vector,4] ; 用函数创建 vector=intarr(6) vector=IndGen(6)+1 array=Reform(vector,3,2)
使用已有数值创建矢量和数组
在IDL命令行中,可以用一对方括号创建一个矢量或一个数组,如下
vector=[1,2,3]
这是一个整型矢量,因为数据值为整型值。 可以用Help命令,获取关于数据类型和变量结构的信息,如下:
Help,vector VECTOR INT = Array[3]
如果想增加从第四个元素到矢量中,在IDL中可以很轻松地完成。只需键入:
vector=[vector,4] IDL> Print,vector 1 2 3 4
数组也可以在IDL命令行中建立。例如,可以建立一个两行三列的数组,如下所示:
array=[[1,2,3],[4,5,6]] Print, array
输出IDL输出窗口中将会如下所示:
1 2 3 4 5 6
使用命令创建数组
注意,这等同于先建立一个矢量,然后用Reform命令将此变形为一个三列二行的数组,要注意的是,尽管IDL中数组是按列存储的,但是使用函数进行处理的时候,是按 行进行的。如下所示:
vector=IndGen(6)+1 array=Reform(vector,3,2) Print, array 1 2 3 4 5 6