摘要: 在诸如 C 和 Fortran 等高级语言中,程序源代码中的数据类型说明(如 C 中的“int” 以及 Fortran 中的 integer)提示用户怎样在程序中定义变量。在程序运行时,变量的类型保持不变。而 IDL 则提供了更为灵活的数据类型的定义方法,它允...
在诸如 C 和 Fortran 等高级语言中,程序源代码中的数据类型说明(如 C 中的“int” 以及 Fortran 中的 integer)提示用户怎样在程序中定义变量。在程序运行时,变量的类型保持不变。而 IDL 则提供了更为灵活的数据类型的定义方法,它允许用户在交互式或编 译模式下均可以创建新的变量。 在任何时候,IDL 都允许用户创建新的变量,或重新定义已有的变量。
var = 3.1
help, var
var = 100
help, var
在 IDL 中创建新变量的灵活性也给其程序带来了很大的灵活性。但这种灵活性也意味着,用户需要在程序中密切跟踪所有变量的类型。 IDL 是面向矩阵的语言,因此任何有效的 IDL 变量(包括数组类数据类型和非数字 类数据类型)都可以作为多维数组的元素。 不管是在的 IDL 的命令行中,还是在 IDL 的程序中,使用“help”命令始终是帮助跟踪变量类型和大小的有效途径。对于标量类变量,“help”命令将显视自变量的名称、类型和值。 IDL 自身提供了变量转换的函数,可以将变量从一种类型转换到另外一种类型,而保持其值不变(除非在整型转换过程中变量被截断)。
var = 255
var = byte(var)
help, var
var += 1
var = byte(var)
help, var
上面发生了截断。 当“fix”函数使用于浮点型变量向整型变量转换时,将会发生截断现象。
arr = [1.1, 2.2, 3.3, 6.6, 7.7, 8.8]
tmp = fix(arr)
print, tmp
使用 round、floor 和 ceil 函数可以更好的控制浮点型变量向整型变量的转换。
tmp1 = round(arr)
tmp2 = floor(arr)
tmp3 = ceil(arr)
print, tmp1
print, tmp2
print, tmp3
字符串变量 (string) 可以被转换成数字类型:
vara = '3.2'
varb = '123ABC'
print, float(vara)
print, float(varb)
IDL 是一个擅长于处理矢量或数组数据的软件,所以有大量的IDL 命令用于创建不同数据类型的矢量和数组。
arr = bytarr(5,5)
print,arr
vect = findgen(10)
print,vect
经常见到的整形变量的除法的问题。
result=12/5
print, result
result = 12.0 / 5
print, result