菜鸟速成记-IDL语法基础

来源:互联网 发布:淘宝达人申请直播入口 编辑:程序博客网 时间:2024/05/22 17:19

IDL语法基础

基本数据类型

  • 字节型 var x=0B
  • 16位有符号整型 var x=0
  • 32有符号长整型 var x=0L
  • 64有符号整型 var x=0LL
  • 16位无符号整型 var x=0U
  • 32… var x=0UL
  • 64… var x=0ULL
  • 浮点型 var x=0.0
  • 双精度 var x=0.0D
  • 复数 complex(a,b)
  • 字符串 var x=” or x=”“
  • 指针 var x=ptr_New()
  • 对象 var x=Obj_New()

类型的转换

主要用到的:
- 字节型 BYTE(1.2)
- 整型 FIX(2.5)
- 浮点型 FLOAT([])
- 双精度浮点型 DOUBLE([A,B])

系统变量

  • !D.NAME 当前图形设备的名称
  • !D.X_SIZE 当前图形窗口的宽度
  • !D.Y_SIZE 当前窗口的高度
  • help,!cpu,/str 获取当前CPU
  • !DIR 获取当前路径
  • !DLM_PATH,/STR

数组

需要注意
  • 先列后行从0开始
创建数组
  • 创建0数组
    • 定义:初始值是0的字节型数组
    • bytArr()
    • intarr()
    • lonarr()
    • lon64arr()
    • uintarr()
    • ulongarr()
    • fltarr()
    • dblarr()
    • strarr()
  • 创建索引数组
    • bindgen()
    • indgen()
    • lindgen()
    • l64indgen()
    • uindgen()
    • sindgen()字符串

其它的感觉不是那么常用。。所以没写。
- 常规函数创建
- make_array(col,row,/dt,value=v)
- 创建特殊数组
- randomu()函数 返回均匀分布浮点型数组
- randomn()函数 返回正态分布浮点型函数

子数组的提取

arr[1:3:2,1: *]跳跃取点a:b:c代表a从a开始到b终止 ;c是步长
arr[-1]是意味反向索引

相关主要函数

  • size(arr[,/keywords]) 返回结构信息
  • where()
  • reverse() 矩阵反转
  • Transpose() 数组转置
  • Rotate() 函数
  • Rot() 任意角度旋转
  • Sort() 数组排序
  • N_ELEMENTS() 返回元素的个数
  • MIN() 求最小值
  • TOTAL() 元素关键字求和
  • MEAN() 平均值计算
  • VARIANCE() 方差计算
  • STDDEV() 计算数组元素方差

Markdown

字符串

之所以要写这次基础,大半原因是为了数组和字符串,它们是图像处理和文件批处理的灵魂。
- 特殊字符串
- Bell 7B
- 后退 8B
- 水平TAB 9B
- 换行 10B
- 回车 13B
- ESC 27B

PRO DEMO_LABELVALUE=300STRING='HELLO WORLD!'WTLB=WIDGET_BASE(/BASE_ALIGN_CENTER,/COLUMN,DISPLAY_NAME=string)LABEL=WIDGET_LABEL(WTLB,VALUE='THIS IS THE FIRST ROW.'+STRING(13B)+'AND THIS IS THE SECOND ROW.',YSIZE=400,XSIZE=400)WIDGET_CONTROL,WTLB,/REALIZEEND
- 效果展示:这是一个简单的窗口机制![Markdown](http://i4.buimg.com/1949/d07e439ba757e5c3.png)

-部分函数操作
- STRCOMPRESS(STR) 删除字符串中空格
- STRJOIN() 字符串连接 和+差不多
- STRLEN() 返回字符串长度
- STRLOWCASE() 将所有的大写转换小写
- STRUPCASE() …大写

结构体还是比较简单的

由于有语法基础,这儿就不说了。

链表和哈希表

  • 链表LIST
    Markdown
  • 哈希表HASH
    Markdown

关系符运算

  • EQ
  • NE
  • GE
  • GT
  • LT
  • LE
    写where语句表达式时特别有用!

程序控制

  • FOR i=a,a2 do begin
  • FOEREACH ele,arr,DO …
  • WHILE … DO…ENDWHILE
  • REPEAT UNTIL
  • IF…THEN BEGIN…ENDIF
  • SWITCH … CASE EXP OF A:STH B:STH2 ELSE: EXCUTE STH ENDCASE
  • BREAK
  • CONTINUE
  • GOTO

调用执行方式

  • EXCUTE() 通过调用字符串中的命令来实现命令执行的功能。
com='PLOT,[0,1]'VOID=EXECUTE(COM)

就两行代码,就出现了这样的效果:
Markdown

  • CALL_FUNCTION()函数 通过调用函数字符串来实现函数的执行功能
CALL_FUNCTION('SQRT',4);RETURN THE VALUE 2.

总结

总的来说,IDL调用方便,就是面向对象的语言用多了,突然这种像MATLAB又像VB的语言,用起来不是那么顺手~

Markdown

0 0