使用IDL的12个小技巧
- 格式:doc
- 大小:38.00 KB
- 文档页数:4
使用IDL的12个小技巧tip 1 put code in files. your choices are to write main-level programs, batch files, and normal procedures/functions. the bulk of your code should probably be in procedures and functions, but there are certainly reasons to use both main-level programs and batch files. main-level programs are handy for setting up a situation and allowing you to enter commands accessing the variables in the program after it has run. batch files are good for including code that needs to be typed in multiple locations.把代码存放在文件中。
你可以选择写主程序,批处理文件和常见的过程或函数。
大量的代码应该是包含在过程和函数中,但是为什么要用主程序和批处理文件,这肯定是有它的原因的。
主程序有利于环境的创建,在程序运行后你还可以输入命令来访问它的变量。
批处理文件有利于存储那些需要在多个位置键入的代码。
tip 2 place your main routine last in a file and name the file the same as this routine plus a ".pro" extension. alternatively, you could put each routine in its own file with the same name as the routine plus a ".pro" extension. following this advice will save a big headache someday. when you manually compile your code, this tip doesn't matter. do this if you want idl to automatically find your code (and you will eventually, probably tomorrow).把你的主程序放在文件的最后,并把此程序名作为文件名,以".pro"为扩展名。
IDL入门教程范文IDL(Interactive Data Language)是一种用于科学数据分析、可视化和探索的编程语言。
它是一种高级语言,专门用于处理和分析科学数据,具有丰富的数据处理和绘图功能。
本文将为初学者介绍IDL的基本概念和语法,并演示一些常用的数据处理和可视化技巧。
1.IDL的基本概念和语法:- 数据类型:IDL支持常见的数据类型,如整数(int)、浮点数(float)、字符(char)和字符串(string),以及数组和结构体等复杂数据类型。
- 变量定义和赋值:IDL使用类似于C和Fortran的语法,可以使用等号(=)进行变量赋值。
例如,`x = 10`表示将整数值10赋给变量x。
-数组操作:IDL支持多维数组操作,可以使用方括号([])指定数组的维度和索引,如`a[0,1]`表示取二维数组a的第一行第二列的元素。
- 函数和过程:IDL支持函数和过程的定义和调用。
函数可以返回一个值,过程则只执行一系列操作而不返回值。
例如,`function sum, a, b, c`表示定义一个函数sum,接受三个参数a、b和c,并返回它们的和。
- 循环和条件语句:IDL支持常见的循环语句(如for循环和while循环)和条件语句(如if语句和switch语句),用于控制程序的执行流程。
-文件读写:IDL提供了读写文本文件和二进制文件的函数,可以方便地读取和保存数据。
2.数据处理和可视化:- 数据加载:IDL提供了加载各种数据格式的函数,如文本文件、图像文件和NetCDF文件等。
通过读取数据文件,可以将数据加载到IDL的变量中进行处理和分析。
-数据处理:IDL提供了各种数据处理函数,如数组运算、统计分析和滤波等。
可以通过这些函数对加载的数据进行加工和处理,以获取所需的结果。
-数据可视化:IDL有丰富的数据可视化功能,可以通过调用绘图函数绘制直方图、散点图、曲线图、等高线图等。
绘图函数提供了多种参数和选项,可以灵活地定制绘图效果。
文章标题:深入理解IDL语法结构及基础实验中常见问题解决方法一、IDL语法结构在科学研究和数据处理中,IDL(Interactive Data Language)是一个非常重要的编程语言工具。
它具有灵活、强大的数据处理功能,可以用于天文学、地球物理学、气象学等多个领域的数据处理和分析。
了解IDL的语法结构对于快速上手和编写高效的代码非常有帮助。
1. 变量命名和赋值在IDL中,变量名大小写敏感,可以包含字母、数字和下划线,但必须以字母或下划线开头。
赋值可以使用等号“=”,也可以使用“->”符号进行向量运算,例如:a = 5 或 a -> 1:10。
2. 控制流程IDL具有常见的控制流程语句,包括if-else条件语句、for循环和while循环等。
掌握这些语句对于编写复杂逻辑的程序非常重要。
3. 数组和矩阵操作IDL对于数组和矩阵的处理非常方便,可以进行快速的运算和处理。
需要注意数组的索引从0开始,而不是从1开始。
4. 函数和程序IDL提供了丰富的内置函数库,同时也支持用户自定义函数和程序。
函数和程序可以将一系列处理步骤封装起来,提高了代码的重用性和可读性。
二、基础实验中常见问题及解决方法在使用IDL进行基础实验时,经常会遇到一些问题,下面就我在实验中遇到的问题进行总结和解决方法的共享。
1. 读取数据文件出现乱码在使用IDL读取数据文件时,有时候会出现乱码的情况。
这通常是因为文件的编码格式与IDL默认的编码格式不一致所致。
解决方法是使用SET_PREFERENCE函数设置文件的编码格式,例如:SET_PREFERENCE, 'ENCODING', 'GB2312'。
2. 绘图函数不能正常显示在使用IDL绘制图像时,有时候会出现图像无法正常显示的问题。
这可能是因为图像大小设置不当或者绘图参数设定错误所致。
解决方法是仔细检查绘图函数的参数设置,确保各个参数的取值范围和类型正确。
IDL中的数组操作IDL(Interactive Data Language)是一种用于科学数据分析和可视化的编程语言。
在IDL中,数组操作是一个重要的部分,它允许用户在数组上执行许多不同的操作,包括创建数组、访问数组元素、修改数组值、执行数组运算等。
下面将详细介绍IDL中的数组操作。
数组的创建和访问:在IDL中,可以使用类似于其他编程语言的语法来创建数组。
下面是一些常见的创建数组的方法:1.使用方括号创建一个新的数组:arr = [1, 2, 3, 4, 5]2. 使用make_array函数创建一个指定大小的数组:arr = make_array(10)3. 使用findgen函数创建一个等差数组:arr = findgen(10)访问数组的元素类似于其他编程语言,使用方括号和索引来访问元素。
例如,要访问数组arr的第一个元素,可以使用以下语法:first_element = arr[0]数组的修改:1.修改单个数组元素的值:arr[0] = 102. 使用分片(slice)操作修改数组的一部分:arr[1:3] = [20, 30, 40]3. 使用where函数修改符合特定条件的数组元素:idx = where(arr > 10, count)arr[idx] = 0数组的运算:IDL提供了许多用于对数组执行数学运算的内置函数。
以下是一些常见的数组运算:1.数组的加减乘除:arr = array1 + array2arr = array1 - array2arr = array1 * array2arr = array1 / array22.数组的平方、平方根、指数运算:arr = sqrt(array)arr = square(array)arr = exp(array)3.数组的统计计算:mean_val = mean(array)max_val = max(array)min_val = min(array)std_dev = std_deviation(array)数组的运算可以对整个数组或者数组的部分元素进行操作。
IDL中曲线拟合的一个注意事项曲线拟合我的一大毛病就是实用主义。
实用主义的好处是短期效率较高,而坏处是没有足够的灵活性,也容易出错。
我的工作中的一个重要操作是拟合曲线,这在IDL中是比较容易的,按格式写好表达式,比如expr='P[0]*exp(-((x-P[1])/P[2])^2/2.0)+P[3]'然后再猜个初值start=[max13co,center,0.3,0.0]然后就可以对数据(下面的例子中z13co,spec13co分别是数据的横、纵坐标值,rerr是误差值)进行拟合了,result=MPFITEXPR(expr,z13co,spec13co,rerr,start)通常这样就可以,不过,和其他迭代方法一样,这样的数据拟合也是依赖于初值的选取的,初值选得够好,计算速度就快,也能得到正确的结果。
一般来说,随便选个初值也能得出正确结果,只是慢一些。
但是偶尔也会出现无论怎么选初值也无法得到正确结果的情况。
这个时候就需要额外的处理了,那就是给拟合加一些限制,对于MPFITEXPR函数来说,就是加一个参数PARINFO,如下result=MPFITEXPR(expr,z13co,spec13co,rerr,start,PARINFO=pc)其中pc=replicate({fixed:0,limited:[0,0],limits:[0.D,0.D]},4)是一个结构体,其中记录了对拟合参数的要求。
一些例子如下pc(0).fixed=1表面固定第一个参数;pc(1).limited(0)=1表示对第二个参数加下限,pc(1).limits(0)=center-0.1表示对第二个参数的下限值;pc(1).limited(1)=1表示对第二个参数加上限,pc(1).limits(1)=center+0.1表示对第二个参数的下限值;加了足够好的对参数的限制之后,通常就能得到正确的拟合结果了。
IDl界面编写技巧--复杂的界面还是有技巧可循的界面编写的原则:1 。
顶base 不设置大小,由子组件撑起整个界面2 。
所有组件不用xoffset 和yoffset,少用xsize和ysize3 。
设置xsize和ysize时,尽量不用定死的数组,而更加当前屏幕大小给定一定比例。
4 。
规划好整个界面,同一类组件单独放在一个base里---------------------------------------------------------------------说明:1 程序中顶base是不设置大小的,应该设置子组件的大小,然后把界面给撑起来。
:这样整个界面自适应,也容易修改添加界面。
2 所有组件应该不用设置偏移量(xoffset,yoffset),用了偏移量,界面结构会变的混乱和不可控制。
所有组件最好让它直接根据默认的规则自然排列。
如果真的需要把某个组件偏移的话,那么就用widget_label,设置它的value为所需要长度的空字符串,来替代xoffset和yoffset。
3 除了关键的子组件,也尽量避免使用xsize和ysize。
其实很多时候组件大小都是根据结构自适应的,用到xsize和ysize的地方很少。
如果每个组件都设置大小,那么界面就会很死板,在不同分辨率的屏幕会变乱和难于维护。
每次必须要设大小的是draw,和一些需要撑其界面的重要子部件。
4 设置xsize和ysize,最好是先用get_screen_size获得整个屏幕大小,在根据获得大小的比例来设定某组件的xszie和ysize.例如:我获得当前屏幕大小的数组是screensize,那我xsize=screensize[0]*0.8,ysize=screensize[1]*0.7.这样根据不同分辨率,界面会保存相同的比例和自适应度5 对于自己想要实现的界面,一定要有很好的规划,不能把所有的组件放在一个base里。
应该根据界面结构关系嵌套不同的base,同一类的组件放在一个base里。
IDL语言简明教程IDL(Interactive Data Language)是一种用于科学数据分析和可视化的专业编程语言,具有广泛的应用领域,包括天文学、地球物理学、气象学、生物学等。
IDL具有易于学习和使用的特点,本文将为您提供一个简明教程,帮助您快速入门IDL语言。
第一部分:IDL基础1.变量和数据类型-变量用于在内存中存储数据,可以用字母、数字和下划线命名,并区分大小写。
- 常见的数据类型包括整数(int)、浮点数(float/double)、字符串(string)和数组(array)。
2.数组和矩阵运算-数组是IDL中最常用的数据结构,可以存储一维或多维的数据。
-可以使用运算符进行数组的加减乘除运算,或进行矩阵运算。
-数组的索引从0开始,可以使用方括号指定索引值。
3.控制流语句- 控制流语句用于控制程序的执行流程,包括条件语句(if-else)和循环语句(for、while等)。
-条件语句根据条件的真假执行相应的代码块。
-循环语句用于重复执行一段代码,可以指定循环的次数或根据条件判断是否继续循环。
第二部分:IDL数据处理1.数据输入和输出- 使用read_*函数可以从文件中读取数据,如read_ascii、read_binary等。
- 使用write_*函数可以将数据写入文件,如write_ascii、write_binary等。
-IDL还提供了图形界面,可以通过鼠标交互进行数据的选择和操作。
2.数据处理函数-IDL提供了丰富的数据处理函数,用于对数据进行统计分析、滤波、插值等操作。
- 常见的函数包括mean、median、filter、interpolate等,可以根据具体需求选择函数进行数据处理。
3.图像处理和可视化-IDL可以进行图像处理和可视化,包括图像读取、显示、增强和保存等操作。
- 使用image_read函数可以读取图片文件,使用tv函数可以显示图像。
- IDL还提供了绘制2D和3D图形的函数,如plot、contour、surface等,可以将数据可视化。
平滑图像可以通过将每个像素值与它周围相邻像素值进行平均来平滑图像。
这就是均值或方盒平滑。
均值平滑是由I DL中的功能函数S m ooth完成的,它是在给定的奇数宽度的范围内实现等加权值平滑。
例如,如果周围是3*3宽度,那么每个像素由它和它的周围八个像素值的平均值代替。
比较一幅没有经过平滑处理的图像和经过5*5 方盒的均值平滑处理后的图像,键入:IDL>Window,0,XSize=192*3,YSize=192IDL>TV,image,0,0IDL>smooth ed=Smooth(image,5,/Edge_T runca te)IDL>TV, smooth ed, 192, 0注意,与命令Smo oth一起使用的关键字Edge_Trun cate。
该关键字可复制图像边缘附近的像素,以便实现整幅图像的平滑。
如果不使用该关键字,图像边缘附近的像素仅仅是简单复制,而没有平滑。
图像平滑被应用在一种称作晕光蒙片的图像处理技术中。
这种技术可用作定位图像上的棱边或者是像素值突然变化的地方。
这种技术非常简单:从未平滑的图像中减去平滑的图像即可。
键入:IDL>TV, ((image-smooth ed)+255)/2.0, 2*192, 0图像显示应如图36所示。
用Smoot h命令,赋给相邻的像素值相等的权值来计算平均值。
有时会导致出现不希望的模糊图像。
另一种方式是用称为卷积的过程来平滑图像。
这种技术中,一个方形内核和图像一起参与卷积计算。
例如,在3*3的情况下,Smooth命令使用的内核为:1 1 11 1 11 1 1如果给予中心像素值更大的权值,而它周围像素值的权值小一些,图像就不会那么模糊了。
【167】IDL中相关技巧IDL 中相关技巧1. 注释:分号“;”表⽰注释内容的开始。
2. 续⾏:最后⼀个字符是“$”,那么本⾏将紧接着下⼀⾏,续⾏标志。
(换⾏符,$+回车)3. 中⽂编码:窗⼝》⾸选项》常规》⼯作空间》⽂本⽂件编码 【GB2312】中⽂编码4. ⼯作空间:⽂件》切换⼯作空间【也可以通过复制⽂件夹,然后在左侧粘贴即可】5. ⼤⼩写:窗⼝》⾸选项》IDL》格式器 === 修改⼤⼩写,通过Ctrl+Shift+F 变⼤写(改变成默认格式)=== 通过9的⽅法也可以修改成Alt+F 总结: Step 1:⾸先修改格式器中全部为⼤写! Step 2:修改格式快捷键,缺⼀不可!6. 帮助:快速获取帮助,"?indgin"7. 显⽰命令⾏:窗⼝》显⽰视图》其他,勾选“命令⾏”8. 多⾏注释:Ctrl+;可以注释多⾏9. 补全函数:Alt+/可以补全 可以修改快捷键如下图所⽰:10. 消息窗⼝:DIALOG_MESSAGE函数11. 断点:双击增加“断点”,点击F6往下⾛12. 中⽂错误:print 某些中⽂字的时候(例如"程序"),会出现语法错误,前⾯加上⼀个空格就好了,或者不⽤双引号,⽤单引号!13. 程序发布:⾸先重置下,命令⾏中输⼊:save, filename='D:\helloidl.sav', /routines,⽣成*.sav⽂件14. 可执⾏程序:命令⾏中输⼊:make_rt, 'helloidl', 'D:\', savefile='D:\helloidl.sav', /overwrite,⽣成*.exe⽂件,通过修改“helloidl.ini”中的“Show=False”,同时将ENVI的License⽂件夹复制过去可以将两个提⽰关掉,直接显⽰代码内容15. 快速获取⽂件路径:直接拖拽过去即可16. 调出“命令⾏”的⽅法17. 修改代码字体:18. 添加⼯程项⽬:右键 >>> 新建⼯程 >>> 选择“从已存在⽬录创建IDL⼯程”SYSTIMEN_ELEMENTSN_PARAMSKEYWORD_SETARG_PRESENTS。
使用IDL的12个小技巧IDL(Interactive Data Language)是一种用于科学数据分析和可视化的编程语言,广泛应用于天文学、地球科学、气象学等领域。
下面列举了一些使用IDL的小技巧,以便更高效地使用该语言:1.使用多行注释:在IDL中,可以使用分号';'来添加注释。
然而,为了使代码更易读,可以使用/*注释内容*/的形式添加多行注释。
2.使用内建函数:IDL提供了许多内建函数来执行各种操作,如数学计算、数组处理、文件读写等。
在编写代码时,了解和使用这些函数可以有效地简化代码,并提高执行效率。
3. 显示帮助文档:IDL的帮助文档非常丰富,包括每个函数的定义、用法示例以及相关的参考资料。
在IDL命令行中,可以通过help函数来获取一些函数的帮助文档。
例如,help, function_name。
4. 使用通配符匹配文件名:在IDL中,可以使用*和?通配符来匹配文件名。
例如,read_ file, 'data*.txt'将读取以data开头、以.txt结尾的所有文件。
5.使用绘图模板:IDL提供了各种图形模板,可以用于创建各种类型的图表,如散点图、线图、柱状图等。
使用这些模板可以大大简化创建和自定义图形的过程。
6.使用图像处理工具:IDL提供了强大的图像处理工具包,可以对图像进行滤波、增强、分割等操作。
熟悉这些工具和函数,可以使图像处理过程更加高效和准确。
7. 使用结构体进行数据组织:IDL使用结构体(structure)来组织和存储复杂的数据。
结构体可以包含不同类型和大小的变量,使得数据的访问和操作更具有灵活性。
8.使用FOR循环和FOREACH迭代:在IDL中,使用FOR循环可以方便地对数据进行迭代处理。
另外,使用FOREACH迭代方式可以更加简洁地遍历数组元素。
9.使用条件语句:IDL提供了丰富的条件语句,如IF、ELSEIF和CASE语句,用于根据不同的条件执行不同的代码块。
第三章图像数据处理本章概要IDL最开始是一种处理图像的语言。
正因为此,世界各地的许多科学家和工程师仍在用IDL语言。
这章阐述了图像处理的基本工作。
将从中学到以下几点1.怎样读取和显示图像数据2.怎样缩放图像数据3.怎样在显示窗口中定位图像4.怎样改变图像的大小5.怎样从显示设备中读取图像6.怎样完成基本的图像处理任务7.怎样建立简单的图像滤波器图像处理事实上,任何类型的二维数据集都可认为是一幅图像。
但是要在一个8位的显示设备上显示图像数据,就必须将图像数据调整为 0~255之间的字节型数值。
(在一个24-bit的显示设备上,24位图像的RGB值必须调整成字节型数值。
)因为图像总是以字节型数值显示,所以图像总是以字节型数组来存储。
但是无论图像是怎样存储的,图像总是由两个显示图像的IDL命令:TV和TVScl以字节型数值来显示。
要了解是怎样工作的,需要有一些图像数据用于处理。
用命令LoadData来打开图像数据集Ali and Dave。
将要处理这两幅图像数据中的第二幅图像。
键入IDL>image=LoadData(10)IDL>image=image[*,*,1]显示图像可用TV和TVScl两个IDL命令中的任一个来显示图像。
这两个命令几乎在各个方面都是一样的,包括能与之一起使用的关键字。
仅仅在一个方面不同:TVScl将图像数据调整为与IDL运行时所用颜色数目相适应的字节型数值。
例如:如果在使用IDL时用220种颜色,则在图像显示之前TVScl将图像数据调整为0~219之间的字节型数值。
另一方面,TV命令取图像数据本身的值,仅仅将其作为字节型数值传送到显示设备上。
如果有必要,图像数据将被截断以符合字节型数值。
如果图像数据不被调整到0~255之间,图像将很可能显示不正确。
注意,与Plot,Surface和Contour命令不同,TV和TVScl命令在显示图像之前不删除已显示的内容。
一般情况下这个问题不大,但有时候也会产生一些麻烦。
第四章图形显示技术本章概要在学会怎么显示线画图、曲面图和等值线图后,就可以用自己的想象力和创造力来显示数据了。
本章给出了许多特殊的可视化技术以增强数据显示能力。
没有打算描述IDL中每一种可能的技术。
本章将介绍一些更普遍的技术。
本章的目的是为读者提供工具和概念,以便帮助读者创造自己独特的数据显示。
将学到:1.IDL如何运用颜色2.怎样在IDL中创建和保存颜色谱表3.怎样按规范修改坐标轴的注记4.怎样用IDL处理坏的或残缺的数据5.怎样建立三维坐标系并在里面显示数据6.怎样组合简单图形显示7.怎样用动画显示图形8.怎样将XYZ数据格网化以便图形显示IDL的颜色运用IDL的颜色由三种特殊值组成。
称这些数值为一个三色组,将其写成(R,G,B)即红、绿、蓝,其中红、绿、蓝代表红光、绿光、蓝光作用于该显示颜色时的数量,每个值的范围都在0到255之间。
这样,一种颜色可由256级的红色,256级绿色和256级蓝色组成。
这就是说IDL能显示256*256*256,或者说超过167,000,000种颜色。
举例来说,黄色由亮红和亮绿组成,但没有蓝色。
代表黄色的三色组写作(255,255,0)。
过去在IDL里常常用一种索引号通过查表来获得颜色三色值。
现在,由于越来越多地使用24位图形卡,可直接表示三色值。
如果使用索引,所查寻的这个表就被称作颜色转化表(简称为色谱表)。
一个色谱表由三列数组成,一列代表红色值,一列代表绿色值,一列代表蓝色值。
典型地,这些数列被称为矢量。
当用IDL装载色谱表时,所做的就是选择正确的数值放进这些列或矢量之中。
请看这个概念的图解(图40)。
使用索引颜色模式和RGB颜色模式除了了解一个颜色号代表一种颜色的三色值和色谱表被用来决定三色值之外,必须意识到在IDL里有两种颜色模式。
索引颜色模式用于8位显示器,RGB颜色模式用于24位显示器。
(IDL在PC机和Macintosh计算机上同时使用了一种修改过的RGB颜色模式,这两种计算机支持16位颜色)。
IDL入门教程九IDL入门教程九IDL是一种用于科学数据分析和可视化的编程语言。
它强大而灵活,被广泛应用于天文学、地球科学、气象学等领域。
本教程将为你提供IDL 的入门知识,帮助你快速上手。
1.简介IDL(Interactive Data Language)是一种解释型的语言,可以通过命令行交互式地执行程序。
它由主要由美国科研公司斯特里克兰研究公司(STRI)开发,主要用于处理和可视化科学数据。
2.安装和配置3.启动IDL你可以在命令行输入"IDL"来启动IDL交互环境。
启动后,你将看到一个IDL提示符,表示你可以输入命令了。
4.数据类型IDL支持多种数据类型,包括整数(int)、实数(float)、双精度实数(double)、字符串(string)等。
你可以使用赋值语句将一个值赋给变量,例如:```a=10b=3.14c = "Hello, World!"```5.数组IDL支持多维数组的操作。
你可以使用reshape函数改变数组的形状,使用transpose函数转置数组。
还可以使用where函数找出数组中满足条件的元素。
6.控制流语句IDL支持常见的控制流语句,包括if-then-else语句、for循环、while循环等。
你可以使用这些语句来实现条件判断和循环控制。
7.函数和过程你可以使用函数和过程来组织和复用代码。
函数是一个可以返回值的代码块,而过程则是不返回值的。
你可以使用function和pro关键字定义函数和过程。
8.输入和输出IDL提供了多种输入和输出方式。
你可以使用print函数输出结果,使用input函数从用户那里获取输入。
还可以使用open、read、write等函数读写文件。
9.绘图和可视化10.IDL库总结:本教程介绍了IDL的入门知识,包括安装和配置、启动IDL、数据类型、数组、控制流语句、函数和过程、输入和输出、绘图和可视化、IDL 库等。
解决方法:在PostScript输出中确保恰当地缩放数据这个问题可以用两种方法来解决。
第一,一旦将PostScript设备设置为当前图形设备时,可以重新装载色彩表。
或者,确保将图像数据缩放到显示设备所能得到的颜色范围内。
重新装载色彩表将使显示设备上的输出与PostScript输看上去几乎一样。
为了使输出完全一样(当然,是在各种颜色发生技术的约束条件下),有必要将数据缩放到显示设备所能得到的颜色数量范围内。
如果色彩表和数据一样,输出也将一样。
(关于正确缩放数据参见66页的“缩放图像数据”。
)注意,在缺省情况下,在PostScript图像中每个图像像素只保存四位信息。
这意味着,即使PostScript设备能够显示256色,但在输出图像中将只能看到16色。
如果想看到全部256色,必须储存8位的像素信息。
可以用Bits_Per_Pixel关键字在Device命令中设置,如下:Device, Bits_Per_Pixel=8, Color=1问题:PostScript设备显示图像时的不同显示设备与PostScript设备的另外一个不同点是显示图像时的区别。
尤其是,显示设备具有固定尺寸的像素,而PostScript设备具有可变的像素尺寸。
换句话说,在PostScript中一个像素实际上可以是任意矩形尺寸。
这会影响图像输出到PostScript文件中的方法.PostScript设备根据PostScript画图窗口的尺寸和图像的纵横比来决定图像的大小。
例如,如果PostScript的绘图窗口为2*2英寸,并且要输出的图像为360*360像素,那么一个简单的TV命令就能输出2*2英寸的PostScript图像:IDL> thisDevice=!IDL> image=LoadData(7)IDL> Set_Plot, ‘PS’IDL> Device, XSize=2, Ysize=2, /Inches, /EncapsulatedIDL> PlotS, [0,1,1,0,0],[0,0,1,1,0], /NormalIDL> TV, imageIDL> Device, /Close_FileIDL> Set_Plot, thisDevice上述命令产生的输出如图69所示。
idle列表使用方法摘要:1.Idle列表简介2.添加项目到Idle列表3.从Idle列表中移除项目4.查看Idle列表中的项目5.排序Idle列表6.使用Idle列表提高工作效率正文:idl(Idle)列表是一种Python内置的列表,它主要用于存放不在当前作用域内的变量。
这种列表可以帮助我们管理代码中的变量,避免因为变量过多而导致程序难以维护。
下面我们将详细介绍Idle列表的使用方法。
1.Idle列表简介Idle列表是Python内置的一种列表,它与普通列表类似,但有一些特殊之处。
在Idle列表中的变量不会在当前作用域内生效,这意味着在代码中引用Idle列表中的变量时,需要使用global或nonlocal关键字声明。
2.添加项目到Idle列表要向Idle列表添加项目,只需在代码中使用以下语法:```pythonglobal my_varmy_var = 10```这里,我们声明了一个全局变量my_var,并将其值设置为10。
这个变量会被添加到Idle列表中。
3.从Idle列表中移除项目如果想要从Idle列表中移除一个项目,可以使用以下语法:```pythondel my_var```这样,global语句声明的my_var变量就会被从Idle列表中移除。
4.查看Idle列表中的项目要查看Idle列表中的项目,可以使用以下代码:```pythonprint(globals())```这将输出一个字典,其中包含全局变量和Idle列表中的项目。
5.排序Idle列表Idle列表中的项目默认是按名称排序的。
如果需要重新排序,可以使用以下方法:```pythonimport syssys.modules[__name__].__dict__.clear()```这将清空当前模块的变量,然后重新加载它们,从而使Idle列表中的项目按名称排序。
6.使用Idle列表提高工作效率Idle列表可以帮助我们提高工作效率,因为它可以将不常用的变量移出当前作用域,使代码更加简洁。
IDL入门教程八IDL入门教程八IDL(Interactive Data Language)是一种用于科学数据分析和可视化的编程语言。
它具有简单易学、强大灵活的特点,广泛应用于天文学、大气科学、地球科学、生物科学等领域。
本教程将为初学者介绍IDL的基本语法、常用数据类型以及常见的数据分析和可视化方法。
一、基本语法1.注释:在IDL中,以分号(;)开头的行表示注释,不会被编译执行。
例:;这是一段注释2.变量:在IDL中,变量的声明不需要指定数据类型,IDL会根据赋值的内容自动确定数据类型。
例:a=10;将10赋值给变量a3.输出:使用PRINT或MESSAGE函数可以向控制台输出结果。
例:PRINT, "Hello, World!" ; 输出字符串"Hello, World!"4.条件语句:IDL支持IF-THEN和IF-THEN-ELSE条件语句来实现条件判断。
例:a=10IF(a>5)THENBEGINPRINT,"a大于5"ENDIFELSEBEGINPRINT,"a小于等于5"END5.循环结构:IDL可以使用FOR和WHILE循环结构实现迭代操作。
例:FORi=0,10DOBEGINPRINT,iEND6.函数定义与调用:使用FUNCTION和RETURN语句定义函数,并使用函数名调用函数。
例:FUNCTION add, a, bRETURN,a+bENDresult = add(5, 3)7.数组操作:IDL提供了对数组的基本操作,包括创建、访问和修改数组元素。
例:arr = [1, 2, 3, 4, 5] ; 创建数组element = arr[2] ; 访问数组元素arr[3] = 10 ; 修改数组元素二、常用数据类型IDL支持多种数据类型,包括整数、浮点数、字符串和数组等。
下面列举几种常用的数据类型:1. 整数(Integer):表示整数型数据,使用4字节存储。
原文来自michaelgallory译文有不妥之处请大家指正。
tip 1 put code in files. your choices are to write main-level programs, batch files, and normal procedures/functions. the bulk of your code should probably be in procedures and functions, but there are certainly reasons to use both main-level programs and batch files. main-level programs are handy for setting up a situation and allowing you to enter commands accessing the variables in the program after it has run. batch files are good for including code that needs to be typed in multiple locations.把代码存放在文件中。
你可以选择写主程序,批处理文件和常见的过程或函数。
大量的代码应该是包含在过程和函数中,但是为什么要用主程序和批处理文件,这肯定是有它的原因的。
主程序有利于环境的创建,在程序运行后你还可以输入命令来访问它的变量。
批处理文件有利于存储那些需要在多个位置键入的代码。
tip 2 place your main routine last in a file and name the file the same as this routine plus a ".pro" extension. alternatively, you could put each routine in its own file with the same name as the routine plus a ".pro" extension. following this advice will save a big headache someday. when you manually compile your code, this tip doesn't matter. do this if you want idl to automatically find your code (and you will eventually, probably tomorrow).把你的主程序放在文件的最后,并把此程序名作为文件名,以".pro"为扩展名。
或者你可以把每个程序单独放在一个文件里,以程序名作为文件名,以".pro"为扩展名。
这样做的好处是以后会给你省很多麻烦。
当你手动编译你的代码时,这个方法是没什么用的。
如果你想要idl自动找到你的代码时(你最终肯定要的,可能就是明天),就要用这个方法了。
tip 3 be aware of short integers. the default integer in idl is a 16-bit ("short") integer which has a range of -32,768 to 32,767. it is used in situations like: n = 5where no specific type of integer is specified. if you want to change the default integer, putcompile_opt defint32at the beginning of every routine where you want to change the behavior. or, always specify the type of integer you want, liken = 5lto create a long integer (32-bit).注意短整型。
idl中默认的整型是16位(“短”)整型,它的取值范围是-32,768到32,767。
它用于下例情况下:n = 5这里没有指定整数的类型。
如果你想要改变默认的整型,键入:compile_opt defint32在每个你想改变状态的程序的开头,或总是指定你想要的整型类型,如:n = 5l创建一个长整型(32位)tip 4 put compile_opt strictarr at the beginning of every routine you write. the explanation is a bit subtle, but doing this will save you a day's work sometime. it comes down to the fact that both arr(5) and arr[5] can index into the array arr.but idl can get confused trying to figure out if arr(5) is indexing into an array or a function call. the solution is to always use arr[5] for array indexing and to tell idl that you will be doing this withcompile_opt strictarrat the beginning of each routine. (this is not a global setting since there is plenty of legacy code, including idl's library, that would not work with it.)在你写的每个程序的开头键入compile_opt strictarr,这个解译起来有点不太好理解,但这样做有时会省去你一天的工作。
这是源于arr(5)和arr[5]都可以索引数组,但idl尝试去识别arr(5)是索引一个数组还是调用一个函数的时会发生误解。
解决的办法就是总是用arr[5]作为数组索引,通过程序开头的compile_opt strictarr告诉idl你要这样做。
(这不是全球的设置,因为有很多传统代码,包括idl的库是不支持的。
)2 [转贴]使用IDL的12个小技巧tip 5 learn to use where. any time you want to find the elements of an array that match a given condition (naively, you would have an if statement inside of a for loop), you should try to use where instead. (also, make sure to use the optional count parameter and check to make sure it's greater than zero before you index an array with the returned indices.)学会用where。
任何时候你想要找出符合给定条件的一个数组中的元素(你自然的会想到用for循环里的if表达式),你应该试着用where来代替。
tip 6 use keywords in routines you write. keywords are a useful feature that differentiate idl from many other languages. generally, keywords are optional inputs or outputs, though idl does not enforce it. also, learn how to use n_elements, arg_present, n_params correctly to check parameters.在你写的程序中应用关键字。
关键字是idl不同于其它很多语言的一个有用的特征,一般说来,关键字是可选的输入值或输出值,尽管idl没有作出这样的规定。
还要学会正确使用n_elemens, arg_present, n_params来检查参数。
tip 7 use array operations. this is called vectorization and is key to writing efficient idl code. for example, if arr is an array, thenresult = arr 1.0will add 1.0 to each element of arr. almost all of idl's operators will handle array or scalar operands. it is much faster to use them with array operations than to loop over the elements and use the scalar version.利用数组运算。
这称之为向量化,它是有效编写idl代码的关键。
例如,如果arr是一个数组,那么result = arr 1.0将为arr中的每个元素都加上1.0。
几乎所有的idl运算都会处理到数组或标量操作数。
利用数组运算要比循环元素和标量的方法快得多。
tip 8 use the online help. all the documentation is now online and nice looking on all platforms. it is accessible with ? from the idl prompt. it is particularly goodat documenting the library api, but it is the first source for everything idl. 使用在线帮助。