资源预览内容
第1页 / 共50页
第2页 / 共50页
第3页 / 共50页
第4页 / 共50页
第5页 / 共50页
第6页 / 共50页
第7页 / 共50页
第8页 / 共50页
第9页 / 共50页
第10页 / 共50页
亲,该文档总共50页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
IDL语言基础 王志成zcwang 2006 8 5 IDL语言的特性 高级图像处理能力交互式二维和三维图形技术面向对象的编程方式OpenGL图形加速量化可视化表现成数学与统计学算法灵活的数据输入输出方式跨平台图形用户界面工具包连接ODBC兼容数据库多种程序连接工具 一 IDL基础 1 1 IDL变量变量定义变量在使用前 无需说明类型 变量的命名规则变量名称必须以字母和下划线开头 可以包括字母 数字 下划线 美元符号 正确 reade6 fileonly 8 bitComputerTypevariables day of year 错误 name lastthird file4th list temp 变量数据类型Byte字节型Int有符号整数Uint无符号整数Long有符号长整型Ulong无符号长整型Long6464位长整型Float浮点型Double双精度浮点型Complex复数Dcomplex双精度复数String字符串0 32767个字符Struct结构Pointer指针Objref对象的引用 数据类型的转换 1 2 IDL数组 IDL数组运算简介IDL面向矩阵的特性保证数组运算时不用进行循环 IDL中使用数组的两个最大优势体现在 1 数组操作比循环操作快得多 2 数组语法比相对的循环语法更加精练 例子 对数组元素求和Npts 1000000LData randomu 1L npts Sum total data IDL数组操作语句Sum 0 0Fori 0L npts 1L dobeginsum sum data i 循环语句 数组的创建 1 利用 创建 2 利用创建函数创建Bytebytarr bindgen Intintarr indgen longlonarr lindgen ulongulonarr ulindgen floatfltarr findgen doubledblarr dindgen stringstrarr sindgen make arraymake array 3 2 byte 数组的存储格式IDL中数组元素的存储是按列进行的 按列存储的方式意味着连续的数组元素也将按顺序被存储 而且数组的第一维 列 变化的最快 数组的下标数组的下标可以是标量也可以是矢量 进行下标操作时 如果下标超过了范围 则该下标被转换为在允许范围内的最小或最大的下标值 1 3 表达式和运算法则 表达式的书写规则表达式结果的类型将由表达式右边变量的类型决定 运算符数学 mod最大逻辑 NotEqNeLeLtGeGtAndOrXor数组 数组乘 列乘行 矩阵乘 行乘列 指针 运算符的优先级 指针 数组 mod Not 逻辑 1 4 数组运算 如果表达式中有一个变量是数组 结果也是数组如果表达式左边是数组 右边是一个标量 则整个数组将被赋予该标量的值 A 1 2 3 4 B 3 4 5 6 A B A BA 10 0B 10 0 20 0 30 0 40 0 A B A B 取大 取小 0a 2 4 6 7 b 4 5 5 6 print a b 关系运算符eqneleltgegt返回一个数字结果 其中真值用 1B 表示 假用 0B 表示 关系运算符也可以作用于数组的自变量 如果两个自变量都是数组 那么关系运算符将依次作用于两个数组中每一对对应的元素 a 1 0b 2 0help agtbif altb thenprint True a 5b bindgen 9 print bc bleaPrint ca 2 4 6 8 b 3 4 5 6 print agtb可以用于屏蔽数组中的某些值 arr indgen 9 mask arrge5result mask arr 1 5数组操作函数 数组元素的数目n elements函数返回数组中所有元素的数目 arr findgen 32 32 print n elements arr 数组的大小和类型size函数返回一个长整型的矢量结果 包含了输入数组的大小和类型信息 可选关键字n dimensions dimensions type tname n elements分别返回维数 每维的大小 类型代码 类型名称和元素个数arr dist 256 help arrprint size arr dimension print size arr type print size arr tname print size arr n elements 最大值和最小值maxmin函数arr dist 32 print min arr max arr 总和total函数返回数组元素的总和 也可以添加可选变量来计算特定维度的元素总和 total函数还可以使用可选的关键字cumulative来计算累计的和 arr indgen 3 3 print total arr arr indgen 9 print total arr cumulative 1 6数组中元素的定位 查找符合条件的值where函数返回数组或数组表达式中非零元素的下标 使用where函数和逻辑表达式可以查找符合条件的值 where函数允许引入一个可选变量count来检查是否找到符合条件的值 使用where函数时 数组使用一维下标arr indgen 9 10index where arrgt35 print arr index 1 7改变数组的维度和大小 改变数组的大小rebin 通过整数因子数组的大小congrid 调整数组到任意大小Arr 20 30 40 resizeArr rebin arr 9 sample conArr congrid arr 9 conArr congrid arr 10 1 8结构 结构是由一组类型不同的常量 变量和数组组合而成的组合数据类型 结构中的每一个变量或者数组成为结构的成员 结构分为匿名结构和署名结构两种 匿名结构是指没有名字的结构 如果在使用过程中 结构成员的个数和类型可能发生变化 一般使用匿名结构 否则使用署名结构 匿名结构一般用于程序之间值的传递 署名结构主要用在事件结构中 1 8 1匿名结构创建 结构变量 成员1 表达式1 成员2 表达式2 成员n 表达式n 赋值 格式 结构变量 成员 表达式调用 结构变量 成员 表达式 1 8 2署名结构创建 结构变量 结构名 成员1 表达式1 成员2 表达式2 成员n 表达式n 1 8 3结构数组结构数组可以使用已有的结构变量和函数REPLICATE创建 对于署名结构还可以使用结构名创建 其格式为 格式1 结构数组名 REPLICATE 结构变量 D1 D8 1 9指针 指针的创建指针变量 PTR NEW 变量 指针的调用 指针变量检测指针的有效性result ptr valid ptr 指针的释放ptr free ptr 指针数组p arr ptrarr d1 d2 d3 二 编写IDL程序 2 1 定义和编译程序过程 pro 过程一般将几个相关的操作加到一个程序模块中 过程以pro开头 end结束函数 function 函数一般将一个操作加载到一个程序模块中 并返回结果函数以function开头 end结束 并包括一个return语句返回结果 命名和编译源文件命名一个IDL源文件的标志形式是在过程或函数名称后加上扩展名 pro 过程和函数都可以通过 compile 命令进行手动编译或是通过IDLIDE环境进行编译 当需要时 过程和函数会在运行时自动编译 如果IDL调用的过程或函数之前未被编译过 则IDL会搜索路径下所有的文件夹以搜索源文件的名称 2 2控制语句 If语句if条件then语句if条件thenbegin语句endifif条件then语句else语句if条件thenbegin语句endifelsebegin语句endelse Case语句case语句根据一个标量的表达式来选择某个语句或语句块运行 case表达式of情况1 情况2 语句情况3 begin语句endelse 语句endcase当表达式和其中的某个情况匹配 相应的语句被执行 case语句结束 如果没有匹配的情况 那么执行else下的语句 如果没有else语句 将会发生错误 建议在case语句中都加上elsetest case pro For语句for语句每次循环执行一个语句或语句块fori v1 v2do语句fori v1 v2 incdo语句fori v1 v2 incdobegin语句endfor默认条件下增量为1 也可以设定增量While语句当特定的条件为真 while语句执行单个语句或语句块while条件do语句while条件dobegin语句endwhileTest for pro Return语句return语句在当前程序单元中产生一个即时出口 并返回控制 return 结果returnBreak语句break语句用来中断循环的执行breakContinue语句continue语句终止本次循环的执行 执行下次循环continue 2 3参数和关键字 参数参数用来将变量和表达式传递到过程或函数中 参数有时也被称为位置参数 因为它们在自变量中的位置决定了它们在调用的过程或函数中如何被使用 参数通常作为输入 输出自变量 因为这些自变量在过程或函数中不可缺少 关键字关键字为可选自变量或表达式 它可以传递给调用程序 但不是强制性的 输入关键字可以用来指定一个自变量 或者用来设置一个布尔标识 使用参数和关键字在传递给过程或函数之前 输入的参数必须先定义 一个合理的过程或函数 都必须先检测其中任何的强制性输入自变量是否已经定义 然后在进行其他操作 输出位置参数和关键字通常在过程或函数中创建 因此不需要在调用过程或函数时定义 检测参数和关键字n params 返回传递的参数数目n elements 返回一个变量中元素的数目 零表示未定义 size 返回一个变量的类型和大小信息keyword set用于检测布尔关键字 如果自变量定义则返回为真 2 4全局变量 只读的系统变量保存了当前IDL时间段的信息 d name当前图像设备的名称 d window当前图形窗口的索引 d table size当前颜色表的大小可写的系统变量可写的系统变量可以用来调整IDL的默认设置 如果用户改变了可写系统变量的值 那么这种改变在所有层次上都是有效的 p multi设置多面板成图 p font为图形中的字符选择默认字体 order控制图像显示顺序 图形设备的选择通过set plot程序可以选择一个图形设备 所有接下去的图形操作都输入到该设备中 entry device d nameset plot PS plot indgen 10 device close fileset plot entry device 1 直接图形法介绍 直接图形法是将IDL将图形或图像直接绘制在用户指定的图形设备上 直接图形法 速度快 交互差 和图形设备有关直接图形法对内存有默认的管理方法 占用内存少 用户不必自己释放内存 IDL支持的图形设备 2 显示模式 8位显示模式最多支持256色相对应于一个颜色表所有的IDL设备都支持24位显示模式真彩色模式每个像素的颜色由红 绿 蓝各自的强度混合而成支持16777216色不需颜色表 3 图形窗口 当选择的图形设备为WIN MAC或X时 图形结果将直接输出到计算机显示器的一个窗口中 如果图形窗口不存在 则第一个图形或图形显示命令将自动打开一个新的图形窗口 与图形窗口操作有关的过程Window创建一个新的窗口Wset将一个存在的窗口变为当前窗口Wshow显示 隐藏存在的窗口Erase擦除存在窗口中的内容Wdelete删除一个存在的窗口窗口创建的示例程序 BROWNIAN pro 4 坐标系统 IDL提供了三种独立的坐标系统 数据坐标系统 设备坐标系统和正交坐标系统 坐标系统决定着图像如何显示以及显示在窗口的位置 用户可以选用三种坐标系统的一种作为默认坐标系统 也可以
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号