(精品)IDL(数据分析和图像化应用程序及编程语言).ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《(精品)IDL(数据分析和图像化应用程序及编程语言).ppt》由会员分享,可在线阅读,更多相关《(精品)IDL(数据分析和图像化应用程序及编程语言).ppt(111页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、IDL IDL 高级培训高级培训高级培训高级培训基础篇基础篇基础篇基础篇基础篇基础篇 语法基础语法基础1.变量及其属性变量及其属性 整型为短整型,注意使用L 变量的属性是动态改变的 var=5 为整型 var=var*2.0 变为浮点 NaN:!VALUES.F_NAN、!VALUES.D_NAN var=!VALUES.F_NAN,则finite(var)=1基础篇 语法基础2.数组数组 IDL是面向矩阵的语言,几乎所有运算都可以在数组上使用。是面向矩阵的语言,几乎所有运算都可以在数组上使用。数组表达数组表达:arrayn,m 表示n列m行(与其他语言有别),按行排列,0为下标起点 数组引用
2、数组引用:arraysubscript,或(array)subscript 下标语法:下标语法:e、e0:e1、e:*、*、array。array=make_array(10,10,/integer),sub=indgen(12)合法的下标表示:array5,5、array2:3,5、array*,4、array*,5:8、array4,4:*、arraysub、A1,3,5,7:9 reform():array4,4:*为1列4行(列向量),reform(array4,4:*)则为4列1行(行向量)常数的数组表示:常数的数组表示:var=5,则var0=5(合法!)赋值:赋值:array2,
3、4,6,5=4,16,36 where():arraywhere(array lt 0)=-999 数学运算:数学运算:与普通变量基本相同。*和/:表示两个同维数数组对应元素运算 arr1=indgen(5)+1,arr2=arr1。则:arr1*arr2=1,4,9,16,25,arr1/arr2=1,1,1,1#和和#:矩阵运算 arr1(n1,m)#arr2(m,n2)=arr(n1,n2),arr1(n,m1)#arr2(m2,n)=arr(m2,m1)数组串连:数组串连:arr1(5,6),arr2(5,2)。则:arr3=arr1,arr2为(5,8)注意:arr3=arr1,ar
4、r2不合法!(一维除外)其他常用函数其他常用函数:array_equal、rebin()、congrid()、expand()、reverse()数组常用函数:数组常用函数:基础篇 语法基础基础篇 语法基础3.结构结构 一种复合变量,它可以将多种类型的数据存储在一个变量中,对于表示意义相关的数据、程序间一种复合变量,它可以将多种类型的数据存储在一个变量中,对于表示意义相关的数据、程序间交换数据均非常有意义。交换数据均非常有意义。类型及定义类型及定义 命名结构:dot=PIXEL,x:128,y:236,color:bytarr(3),定义后可使用FIXEL定义其他结构 dot1=PIXEL,x
5、:58,y:46,color:255,0,255、dot2=PIXEL,58,46,255,0,255、dot3=PIXEL 匿名结构:person=name:jack,id:123456L,定义后无固定结构,可任意改变 person=name:jack,id:123456L,phone:123-4567 引用引用 变量引用:使用变量名或变量在结构中的位置索引。如:dot.x或dot.(0)数组变量:s=arr:indgen(10),则s.arr=10将数组所有元素赋值为10。结构数组结构数组 定义:dotarr=replicate(PIXEL,10),或dotarr=replicate(do
6、t,10)引用:dotarr1.x=10、dotarr.x=10将所有结构的x赋值为10、dotarr.y=indgen(10)结构中的变量的类型和(数组)大小结构中的变量的类型和(数组)大小 结构定义后,各变量的数据类型以及数组变量的维数均不可改变。当使用中出现不一致时向原类型转换,不能转换时报错。var=dot.x*1.0=128.0,为浮点,而dot.x=dot仍为整型。s.arr=-indgen(8)会改变s.arr中前8个元素的值,而s.arr=-indgen(11)会出错。结构继承结构继承 dot3d=POINT,INHERITS PIXEL,z:0 常用函数常用函数 creat_
7、struct()、n_tags()、tag_names()、struct_assign()基础篇 语法基础4.指针指针 建立动态数据结构的有效工具,是实现建立动态数据结构的有效工具,是实现IDL面向对象编程和面向对象编程和Widget编程的基本要素之一。编程的基本要素之一。IDL 的指针与其他语言的指针有很大的不同,它不是指向存储的地址而仅仅是一个轻型的指向一的指针与其他语言的指针有很大的不同,它不是指向存储的地址而仅仅是一个轻型的指向一个堆变量的引用(指针变量)。堆变量可以动态分配(数据类型和数组维数),这意味着传递指针个堆变量的引用(指针变量)。堆变量可以动态分配(数据类型和数组维数),这
8、意味着传递指针变量就相当于传递动态数据。变量就相当于传递动态数据。Pointer ReferencePointer DataPointer in Heap Variables指针基本操作指针基本操作 创建创建:ptr=ptr_new(initexpr,/allocate_heap,/no_copy)释放释放:ptr_free,ptr标量数组结构基础篇 语法基础 标量指针标量指针 创建:v=5.5,p=ptr_new(v)引用:print,p,*p;p1=p,*p1=20,print,*p 数组指针数组指针 创建:arr=findgen(10),p=ptr_new(arr)引用:print,(*
9、p)5 结构指针结构指针 创建:s=name:joe,age:40,height:180,p=ptr_new(s)引用:print,(*p).name 结构内指针结构内指针 创建:rec=lon:120,lat:20,data:ptr_new(findgen(2,10),p=ptr_new(rec)引用:*(*p).data=findgen(2,20)特殊指针特殊指针 Null指针:nptr=ptr_new(),仅定义一个指针,并不指向一个堆变量。引用时需重新定义指针。Empty指针:eptr=ptr_new(/allocate_heap),定义一个指向一个堆变量的指针,但并未定义变量,引用时
10、可以直接定义变量 指针释放指针释放 ptr_free,ptr 相关函数相关函数 ptr_valid():ptr_valid(nptr)=0,ptr_valid(eptr)=1 heap_gc:释放没有引用的堆变量 指针数组指针数组 ptrarr(d1,.,d8,/allocate_heap)基础篇 编程基础 IDLDE是是IDL的集成开发环境,可以使用的集成开发环境,可以使用IDL命令进行交互式命令运行,编写、调试、运行命令进行交互式命令运行,编写、调试、运行IDL程程序,使用序,使用GUI Builer开发用户界面,使用项目管理器管理工程项目等。开发用户界面,使用项目管理器管理工程项目等。1
11、.IDL程序程序 批处理批处理:由一系列IDL命令组成,以IDL-batchfile方式运行。批处理文件运行时并不编译,因此使用控制结构时必须大量使用续行符($),给书写、理解造成困难。主程序主程序:与批处理相似,但以end结束,以IDL-.run profile方式运行。主程序运行时先编译,因此可以正常使用控制结构。过程:过程:与主程序相似,但以pro proname开始,以end结束。以IDL-proname方式运行(也可以先运行IDL-.compile proname,编译但不运行)。函数:函数:与过程相似,但以function fnname开始,以end结束,并以return语句返回一
12、个IDL变量。以IDL-ret=fnname(para_list)方式运行。在IDL系统中,一个过程或函数即为一个新的IDL命令。变量作用范围:变量作用范围:批处理和主程序方式的变量为全局变量,可以在IDL开发环境中使用。过程和函数的变量为局部变量,只在过程和函数运行过程中有效。基础篇 编程基础2.参数传递参数传递 位置参数位置参数:在参数列表中按位置列出参数名,严格的顺序限制。通常用于必选参数。定义:pro batch,para1,para2,.调用:IDL-batch,para1,para2,关键字参数关键字参数:关键字参数与位置无关,且可以与位置参数混合位置。通常放在位置参数之后,用于可
13、选参数。定义:pro batch,keywordname=keywordsymbol,.调用:IDL-batch ,keywordname=keywordsymbol,IDL-batch ,/keywordname 注意:keywordname用于定义,keywordsymbol用于调用。引用传递和值传递:引用传递和值传递:所有变量为引用传递,其值会被修改。系统变量、下标变量、表达式和常量均为值传递,原变量的值不被修改。参数传递了吗?传递了什么?参数传递了吗?传递了什么?n_params():返回位置参数的个数 keyword_set():关键字参数为不为0常量或已定义的引用传递时返回1,否则
14、返回0 arg_present():关键字参数为引用传递时返回1(无论是否定义),否则返回0 n_elements():关键字参数未传递或未定义返回0,否则返回非0数 基础篇 编程基础3.错误处理错误处理 on_ioerror:当出现I/O错误时,跳转指定的语句。两种用途:跳过错误返回或跳过错误继续。注意:使用on_ioerror,null on_error:当程序运行出错时,并不执行一个新的语句,而是指明IDL应该怎样做。可以设置on_error,1,或在命令行使用retall catch:格式:catch,error_var。当程序执行到catch语句时,IDL为改模块记录一个错误处理语句
15、,并将error_var赋值为0。若程序执行出错,则给error_var赋值相应的错误码,然后跳转到catch后第一条语句。注意:使用catch,/cancelError or Exception is GeneratedIs it an I/O error?Is there an error handler defined by the CATCH routine?Is ON_IOERROR routine in use?Handle error as indicated by setting of ON_ERROR routine or use default error handling
16、.Handle error as indicated by ON_IOERROR setting.Handle error with CATCH-defined error handler and continue program execution.YesYesYesNoNoNo基础篇 编程基础IDL出错处理示意出错处理示意基础篇 编程基础4.编译与运行编译与运行 批处理:批处理:bacthfile,运行 主程序:主程序:.run,编译、运行 过程和函数过程和函数:.compile,编译;-proname,编译、运行。编译规则:编译规则:(1)编译到主程序后,编译停止 (2)编译到与文件同名
17、的程序模块时,停止编译 (3)编译到文件末尾或适合其他规则时,停止编译 自动编译规则:自动编译规则:当过程或函数出现在命令或代码中时,会自动被编译执行。(1)过程或函数所在的文件应在当前工作路径和!Path指定的路径中 (2)过程或函数名与文件名相同 编译函数:编译函数:resolve_routine、resove_all。可用于程序模块中。.sav:IDL-save,编译后存储为.sav文件,便于发布。但版本间不兼容。基础篇 输入输出1.常用概念常用概念 文件操作:文件操作:openr,openw,openu,close 逻辑设备号:逻辑设备号:199,直接使用 100128,使用get_l
18、un获取,free_lun释放 常用函数:常用函数:dilog_pickfile,findfile,filepath2.文本文件的格式处理文本文件的格式处理 自由格式:自由格式:readf,printf,strsplit readf中只接收变量引用,不接收值引用 format语法:语法:format=(),括号内为格式符及其组合 A:naw,n为重复次数,w为输出宽度 I:niw或nIw.m,缺省w=7,特殊用法:i0 F:nfw.d,缺省w=15 X:nX,空格 /:换行符 ::其后的格式不用于最后一项。如每个输出项后加一个,时,最后一项不加。C:c(),表示日期,接受julian日期。有丰
19、富的子集基础篇 输入输出3.二进制二进制文件的关连变量处理文件的关连变量处理 基本命令:基本命令:readu,writeu 关联变量:关联变量:大型重复单元二进制文件的有效读取手段,可以随机读取。一个文件可建立多个关联,解决重复单元不一致的情况。assoc():result=assoc(unit,array_structure,offset,/packed)4.使用使用与机器无关的数据格式与机器无关的数据格式 IDL IDL 高级培训高级培训高级培训高级培训直接图形篇直接图形篇直接图形篇直接图形篇直接图形篇直接图形篇直接图形篇直接图形篇 色彩控制色彩控制色彩控制色彩控制1.基本概念基本概念 颜
20、色构成:颜色构成:(r,g,b),每个颜色值在0255之间,所以IDL可以表现256*256*256种颜色 颜色表:颜色表:一个颜色表由一个3列的数组构成,各列分别表示r、g、b值,通常256行。索引号:索引号:颜色表中的索引位置。可以用来获得颜色的r、g、b值 8 8位显示器和位显示器和2424位显示器:位显示器:8位显示器只能显示256色,24位则可以显示256*256*256色2.索引颜色模式和索引颜色模式和RGB颜色模式颜色模式 索引颜色模式:索引颜色模式:通过颜色表的索引号获得颜色的r、g、b值,用于8位显示器。RGB颜色模式:颜色模式:直接指定颜色的r、g、b值,用于24位显示器。
21、IDL使用一个长整数表示所有颜色的索引号,c=r+g*256L+b*256L*256L。3.动态显示和静态显示动态显示和静态显示 动态显示:动态显示:索引模式将索引号与颜色表中的特定位置连接,称为动态颜色显示。改变颜色表会影响当前索引号所对应的颜色。通常,8位显示是动态显示 静态显示:静态显示:RGB模式直接指定颜色本身,称为静态颜色显示。通常24位显示是静态显示。直接图形篇直接图形篇直接图形篇直接图形篇 色彩控制色彩控制色彩控制色彩控制4.device,decomposed=0|1 decomposed=0:关闭颜色分解,使用索引颜色模式。适用于8位显示和24位显示,但24位时仍是静态显示。
22、此时,可以使用IDL预设的41个颜色表。decomposed=1:IDL缺省模式,打开颜色分解,使用RGB颜色模式。只适用于24位显示。此时,只能使用长整数的全索引。5.tvlct,r,g,b,start,/get:(RGB模式)tvlct,r,g,b,/get可以获取当前的颜色表。tvlct,r,g,b,start可以加载一个颜色表到start指定的入口处。6.loadct,table 加载IDL预设的41各颜色表之一7.创建自己的颜色表创建自己的颜色表 根据颜色表的原理,可以很容易地创建一个3*n数组作为自己的颜色表,用tvlct加载使用。直接图形篇直接图形篇直接图形篇直接图形篇 坐标系坐
23、标系 data:数据单位(缺省)dvice:像素单位 normal:归一化坐标,x:01,y:01 一般来说,在输出图形时,3个坐标系同时存在并都可以使用。例:对于一个一维数组,在未指定坐标系时,IDL会把数组的下标值作为data坐标系下x轴的值,数组的值作为y值画出曲线。直接图形篇直接图形篇直接图形篇直接图形篇 2 2D D图形图形图形图形创建自己的标注创建自己的标注直接图形篇直接图形篇直接图形篇直接图形篇 2 2D D图形图形图形图形多坐标系数据集显示多坐标系数据集显示画真正的圆画真正的圆直接图形篇直接图形篇直接图形篇直接图形篇 2 2D D图形图形图形图形直接图形篇直接图形篇直接图形篇直
24、接图形篇 2 2D D图形图形图形图形在背景上叠加等值线在背景上叠加等值线直接图形篇直接图形篇直接图形篇直接图形篇 2 2D D图形图形图形图形等值线图等值线图填充中的填充中的“黑洞黑洞”直接图形篇直接图形篇直接图形篇直接图形篇 添加文本添加文本添加文本添加文本给图形加文本标注给图形加文本标注 xyouts,x,y,string,font=TrueType字体设置:字体设置:(1)DEVICE,SET_FONT=font_str,/TT_FONT,输出时,使用输出时,使用font=-1|0|1 (2)fontfnont_str Windows环境下环境下TrueType字体设置:字体设置:fo
25、nt_str=font*modifier1*modifier2*.modifiern For font weight:THIN,LIGHT,BOLD,HEAVY For font quality:DRAFT,PROOF For font pitch:FIXED,VARIABLE For font angle:ITALIC For strikeout text:STRIKEOUT For underlined text:UNDERLINE 注意:并非所有选项在两种方式下均合法!直接图形篇直接图形篇直接图形篇直接图形篇 添加文本添加文本添加文本添加文本 使用汉字:使用汉字:font_str=“中文
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品 IDL 数据 分析 图像 应用程序 编程 语言
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内