IDL 8.2.2(SP2)新特性
作者:互联网
发表于 2013-03-06
IDL 8.2.2为IDL图形进行了一些功能改进,新增了几个函数过程和一个系统变量,提供了Widget组件编程的新特性,极大地提升了如PLOT等函数的启动速度。并简化了ENVI自定义工具的创建。工作台编辑器的功能有了改进和增加。
1. 新增IDL技巧专题
在IDL8.2.2帮助中新增了一个技巧专题。此专题在以后会一直进行扩充,可以帮助用户编写的程序更加简单高效。
2. 新增函数
2.1 BOXPLOT
现在可以使用BOXPLOT函数绘制箱线图。如图所示,提供一个N列5行的数组(其中N为绘制图形个数),每一列对应一个图形,5个元素分别对应图中箭头所示位置的Y值。
你可以自定义输入数组的值,也可以使用CREATEBOXPLOTDATA函数自动生成。
图:BoxPlot函数示例
2.2 CREATEBOXPLOTDATA
顾名思义,CreateBoxPlotData函数是为BoxPlot函数创建数据的。自动计算输入数组每一列的最小值(排除可能的异常值)、下四分之一值、中值、上四分之一值、最大值(排除可能的异常值)。
bike_mph = [ $
[12.2, 16.2], $
[12.1, 16.4], $
[10.7, 16.9], $
[11.6, 17.0], $
[10.2, 16.5], $
[10.9, 16.1], $
[11.8, 17.1], $
[10.9, 100.0], $ ;存在一个异常值100.0,看结果已经排除此异常值,最大值为17.50
[12.4, 16.8], $
[12.9, 16.9], $
[13.1, 17.5], $
[13.0, 17.4]]
bpd = CREATEBOXPLOTDATA(bike_mph, MEAN_VALUES=means, OUTLIER_VALUES=outliers)
PRINT, bpd
10.200000 16.100000
10.900000 16.424999
11.950001 16.900000
12.775000 17.324999
13.100000 17.500000
2.3 IMAGE_THRESHOLD
IMAGE_THRESHOLD函数返回一个二值图像,大于阈值则为1,小于阈值则为0。可选的自动阈值算法有:Isodata、Otsu、Moments、Maxentropy、Minerror和Mean。如图所示,上图为原始图像,下图为返回的二值图像。
图:IMAGE_THRESHOLD函数示例
2.4 SCATTERPLOT和SCATTERPLOT3D
SCATTERPLOT和SCATTERPLOT3D函数可以绘制二维和三维散点图。
图:SCATTERPLOT函数示例
2.5 TIC和TOC
TIC和TOC程序可以获取IDL程序的运行时间。TIC程序可以被用作过程或函数。当TIC被当作过程调用时,TIC和TOC可以输出被调用之间的运行时间。当TIC被用作函数调用时,TOC程序可以计算TIC指定过程的运行时间。这样便可以计算子程序和循环内的运行时间。TIC和TOC程序同样可以被用来启动和禁止IDL代码分析器。
3. 其他更新内容
新增 !CONST 系统变量
!CONST系统变量格式为IDL结构体,包含了常用的物理常数。例如,使用里德伯常量计算氢原子跃变放射出的光波长。
首先核查里德伯常量的值:
PRINT, !CONST.me*!CONST.ev^4/(8*!CONST.eps0^2*!CONST.h^3*!CONST.c)
PRINT, !CONST.Rydberg
IDL prints:
10973732.
10973732.
现在计算从n=2到基态的转换:
PRINT, 1e9/(!CONST.Rydberg*(1 - 1./4)), " nm"
IDL prints:
121.50227 nm
获取随机数算法改进
RANDOMU和RANDOMN函数现在使用Mersenne Twister算法来生成随机数。Mersenne Twister算法相对旧版随机数生成器来说,是一个重大改进。
如果想要使用旧版算法,可以使用RAN1关键字。
Graphics: CURRENT关键字升级
CURRENT关键字升级了,用户可以指定此关键字等于已经存在的图形窗口,则指定的图形窗口自动变为当前窗口。
Graphics: 带投影图片显示改进
当显示图像具有地图投影时,IDL自动设置图像的地图范围。同样可以添加显示Box Axes,而不需要手动计算范围。
图:显示图像在某地图投影下,可以自动添加Box Axes
Graphics: 显示地图视界
现在可以显示所有地图投影类型的边界。MAP和MAPGRID函数有三个相关属性:HORIZON_COLOR、HORIZON_LINESTYLE和HORIZON_THICK。例如:
; Create a map using the interrupted Goode projection.
mGoode = MAP('Interrupted Goode', FILL_COLOR='light blue', $
HORIZON_COLOR='red', HORIZON_THICK=3, TITLE='Interrupted Goode')
mc = MAPCONTINENTS(/FILL_BACKGROUND, FILL_COLOR='gray')
图:地图视界显示示例
Graphics: POSITION属性
在所有图形对象中添加了新的POSITION属性。在之前的版本,只能对“main”图像函数使用POSITION属性,例如PLOT、CONTOUR。在创建时,POSITION可以被设置为含有4个元素的向量,[X1, Y1, X2, Y2],分别对应了左下角和右上角的坐标。如果设置为2个元素的向量,则为要显示图形的中心点位置。
Graphics: 速度提升
所有图形函数的启动速度有了极大的提升。其中,利用硬件渲染明显提升了PLOT函数的速度,特别是在绘制大数据量的点时。例如:
;IDL8.2.2版本测试代码
n = 1e6
x = RANDOMU(seed, n)
PRINT, 'Graphics functions:'
FOR i=0,2 DO BEGIN & TIC & p = PLOT(x) & TOC & p.CLOSE & ENDFOR
PRINT, 'Direct graphics:'
FOR i=0,2 DO BEGIN & TIC & PLOT, x & TOC & WDELETE & ENDFOR
;IDL8.0及之前版本测试代码
n = 1e6
x = RANDOMU(seed, n)
PRINT, 'Graphics functions:'
FOR i=0,2 DO BEGIN & start = systime(1) & p = PLOT(x) & print, systime(1)-start & p.CLOSE & ENDFOR
PRINT, 'Direct graphics:'
FOR i=0,2 DO BEGIN & start = systime(1) & PLOT, x & print, systime(1)-start & WDELETE & ENDFOR
IDL8.2.2 prints:
Graphics functions:
% Time elapsed: 2.3860002 seconds.
% Time elapsed: 2.1719999 seconds.
% Time elapsed: 2.1790001 seconds.
Direct graphics:
% Time elapsed: 0.73799992 seconds.
% Time elapsed: 0.64499998 seconds.
% Time elapsed: 0.63299990 seconds.
IDL8.0 prints:
Graphics functions:
17.503000
7.6090000
7.4710000
Direct graphics:
0.67799997
0.64600015
0.65400004
IDLgrPlot: 新的直方图样式
使用IDLgrPlot对象时,设置HISTOGRAM = 2可以超出数据的范围。或设置HISTOGRAM = 3,将水平线的起始点落在每一个X位置,而不是中心位置。
PLOT和BARPLOT: 新的直方图样式
PLOT和BARPLOT函数均添加了新的HISTOGRAM属性。区别在于直方图的起始点位置不同。如下面的例子所示。
h = HISTOGRAM(5*RANDOMU(1,25), BINSIZE=1, MIN=0.0, LOCATIONS=loc)
ex = {THICK:2, XRANGE:[-0.5,5.5], YRANGE:[0,10], $
XMINOR:0, XTICKLEN:0.02, YMINOR:0, YTICKLEN:0.02}
p1 = PLOT(loc, h, /STAIRSTEP, LAYOUT=[2,2,1], $
_EXTRA=ex, XTITLE='Plot Stairstep')
p2 = PLOT(loc, h, /HISTOGRAM, LAYOUT=[2,2,2], $
_EXTRA=ex, /CURR,XTITLE='Plot Histogram')
p3 = BARPLOT(loc, h, LAYOUT=[2,2,3], _EXTRA=ex, $
/CURR,XTITLE='Barplot Default')
p4 = BARPLOT(loc, h, LAYOUT=[2,2,4], _EXTRA=ex, $
/CURR, /HISTOGRAM, XTITLE='Barplot Histogram')
图:PLOT和BarPlot新的直方图样式
ROUTINE_FILEPATH函数改进
如果调用时不输入任何参数,将自动返回当前源码文件的完整路径。这在读取与源码文件相同路径下的数据时非常有用。
工作台编辑器自动补全块语句
当使用块语句时,输入语句最后一词为“begin”时,按回车会自动补齐“end”。支持的块语句包括:IF/ENDIF、FOREACH/ENDFOREACH、 FOR/ENDFOR、ELSE/ENDELSE、WHILE/ENDWHILE、 CASE/ENDCASE、SWITCH/ENDSWITCH和REPEAT/ENDREP。自动补全的“end”与“begin”具有相同的格式(如全大写、小写、首字母大写等)。
如,当输入“IF 1 then begin”后回车,自动在后边补齐ENDIF。
可以在IDL首选项中设置是否自动补全。如图中红框位置。
图:设置是否自动补全块语句
工作台编辑器自动格式化
在IDL工作台的编辑器内粘贴一行或多行语句时,编辑器自动应用默认的格式。相对于之前版本中,等同于粘贴代码后点击源码→格式。
可通过IDL首选项中设置是否使用此功能,如上图中蓝色框中所示位置。
标签:PLOT,8.2,CONST,函数,SP2,IDL,Graphics,TIC 来源: https://www.cnblogs.com/enviidl/p/16375154.html