IDL常用语法
学习一个语言最快的方法就是找一个实际能用的程序跑一下,然后简单看一下这个程序中常用的语法,快速上手,快速反馈,
一直看语法细节而不上手,总会觉得毫无反馈,索然无味
单个语法像是原材料,实际要经过一定组合才成做成菜,直接看别人菜谱可最快学会做菜
一些常识
1. 不区分大小写
2. 注释使用分号(;) 分号右边的任何字符都会被注释
3. 变量无需事先申明,也就是可以通过赋值语句来进行变量、数组定义
4. 数组下标默认从0开始,访问数组元素既可以用方括号[],也可以用小括号()
5. 使用方括号可以更好地区别是访问数组还是函数
6. $符号为续行符
7. !感叹号后面加变量名称,为系统预定义的变量,比如圆周率为!pi
8. Pro中的变量为局部变量,在控制台无法看到,也无法被其他pro使用
创建浮点数组
IDL> X = FLTARR(2)
IDL> print,x
0.000000 0.000000
数组截取
PRO TEST_ARRAY
;创建数组
arr = INDGEN(10)
;获取数组
PRINT, '数组为', arr
PRINT, '第3个元素为: ', arr[2]
PRINT, '第3~7个元素为: ', arr[2:6]
PRINT, '第1、3、6、7个元素为:', arr[[0,2,5,6]]
PRINT, '第5到最后一个元素为: ', arr[4:*]
END
创建字符串
IDL> ss = 'abcdef'
IDL> print,s
abcdef
截取字符串
strmid
Syntax :Result = strmid(Expression, First_Character [, Length] [, /REVERSE_OFFSET])
从字符串的First_Character位置开始;Length为取出的子字符串长度,若省略Length,则读到字符串的末尾;/REVERSE_OFFSET指从尾部算起。
从n1个位置开始,其实n1个数是不算的,后一个值才开始。也可以理解为字符是从0开始算起
示例
IDL> s='abcdefghijklmn'
IDL> s1=STRMID(s,3,4)
IDL> print,s1
defg
;从s的第三个字符开始,不包括第三个字符,取出长度为4的子字符串
IDL> s2=STRMID(s,0,4)
IDL> print,s2
abcd
;从0开始
切换路径
;filepath为存放路径的字符串变量
cd ,filepath
循环控制之for循环
FOR i=0,5 DO BEGIN
PRINT,i
ENDFOR
;
FOR i=0,10,2 DO BEGIN
print,i
ENDFOR
Dotcommand
该系列命令即可在命令行中进行源代码(pro 文件)的编辑、编译、调试及运行等工作,且仅能在命令行下执行。
.edit filename 编辑
.compile filename 编译
.run filename 编译并立即执行
代码辅助
Alt+/可以在编辑器中进行代码补全和提示
可以在命令行中设置同样的快捷键进行代码提示
Plot背景设置为白色
在调用plot函数之前加入如下代码,
DEVICE,DECOMPOSED=1
!P.BACKGROUND='FFFFFF'xl
!P.COLOR='000000'xl
错误信息
Execution halted at 执行停止于
The purview of science grows rapidly with time. It is the responsibility of each generation to join new insights to old wisdom, and to distill the key ideas for the next generation --James P. Sethna