ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

IDL 8.2.2(SP2)新特性

2022-06-14 16:34:03  阅读:193  来源: 互联网

标签:PLOT 8.2 CONST 函数 SP2 IDL Graphics TIC


发表于 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有