- 1、本文档共23页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
11IDL入门教程八
第八章 IDL编程基础
本章概述
本章的目的是学习IDL基本编程技巧,具体的来说,可以学到以下方面内容:
IDL批处理文件、主程序、过程和函数之间的区别;
如何在IDL程序中输入和输出信息;
如何在IDL程序中使用定位参数和关键字;
如何编译和运行IDL程序;
程序中的常用控制语句语法
如果把IDL程序看作一系列IDL命令的话,那么IDL程序——或称为IDL程序模块——可以分为四类:(1)批处理文件(2)主程序(3)过程(4)函数。
编写IDL批处理文件
最简单的程序是一个IDL批处理文件。一个批处理文件由一系列命令组成,这与在IDL命令行敲入的命令完全一样。大多数人用批处理文件是为了自动执行自己在IDL命令行一次又一次敲入的命令。
例如,假设要在IDL中打开并显示一组图像,如果已经将图像数据读入到变量image中,那么用来显示图像的命令可以如下所示:
IDL thisImage = BytScl (image, Top = 199)
IDLLoadCT, 5, NColors = 200
IDL s = Size (image)
IDL Window, /Free, XSize = s[1], ysize = s[2]
IDL TV, thisImage
这五行代码并不多,但键入三、四次之后,可能已决定把他们放在一个名为ImageO文本文件中。这文件就是所谓的批处理文件。
要执行该文件中的命令,必须把@放在IDL命令行的开头,其后再加上文件名即可。(.pro为默认扩展名。如果加了其它扩展名,那么应该把文件名称写完整)如下所示:
IDL @ImageOut
注意,文件名没有在引号中,这与IDL文件名的一般规则是不一致的。
IDL会严格执行批处理文件中的命令,就像在命令行上键入一样。这意味着有必要用行续字符($)和其他命令行语言来让IDL确认键入的命令。如果在文件中的命令输入错误,那么出现的错误结果和在命令行键入命令出现的错误结果是一样的。
假设要打开8到10个图像文件,因而不得不分别打开每个图像文件,读取数据,然后运行批处理命令将每一个图像显示在窗口中。具体地说,可以这样自动进行读取数据和显示图像过程:
theseFiles = FindFile (‘*.img’, count = numFiles)
Print, ‘number of files found: ‘, numfiles
For j = 0, numFiles-1 Do Begin
Openr, lun, theseFiles[j], /get_lun
Image = BytArr (512,512)
Readu, lun, image
Free_lun, lun
thisImage = BytScl (image, top =199)
LoadCT, 5, Ncolors =200
S = size (image)
Window, /Free, XSize = s[1], YSize = s[2]
TV, thisImage
Endfor
但是这个文件不适合于作批处理文件,因为FOR循环里面有多行语句。如果没有续行符($)和命令连接符()的话,这种程序是很难写在命令行中的。为了自动执行由多行控制语句组成的命令,最好使用IDL主程序。
编写IDL主程序
IDL主程序和批处理文件在很多方面很相似,但也存在着很大的区别。像批处理文件一样,一个主程序也包含一系列命令。但与之不同的是,这些命令必须以END语句结束。例如,上面自动读取数据和显示图像的程序可以写成一个IDL主程序:
theseFiles = FindFile (‘*.img’, count = numFiles)
Print, ‘number of files found: ‘, numfiles
For j = 0, numFiles-1 Do Begin
Openr, lun, theseFiles[j], /get_lun
Image = BytArr (512,512)
Readu, lun, image
Free_lun, lun
thisImage = BytScl (image, top =199)
LoadCT, 5, Ncolors =200
S = size (image)
Window, /Free, XSize = s[1], YSize = s[2]
TV, thisImage
Endfor
End
批处理文件和IDL主程序最大的区别就是主程序的命令语句先由IDL编译器编译成程序模块,然后才执行代码。这就是为什么在主程序中可以有多行控制语句的原因。
如果将上面的代码保存在文件ImageO中,键入如下命令就可以编译并运行这个程序模块:
IDL .R
文档评论(0)