IDL实用函数

文章目录

  • 常用函数
    • 1.make_array(n,m)
    • 2.size( )
    • 3.typename()
    • 4. where
    • 5.reverse
    • 6.rotate
    • 7.rot
    • 8.sort
    • 9.UNIQ
    • 10.max,min
    • 11. total
    • 12.product
    • 13.mean
    • 14.alog10()
    • 15.exp
    • 16.alog
    • 17.sqrt
    • 18.指数
    • 19.idl_validname
    • 20.reform
    • 21.rebin 分辨率变化
    • 22.congrid
  • 可视化控件
    • 1.dialog_message
    • 2.dialog_pickfile

常用函数

注:
IDL命令行输入:
?函数名
直接查询与该函数有关的所有信息
借鉴博文:https://www.cnblogs.com/alex-bn-lee/p/5782132.html

1.make_array(n,m)

创建一个n列m行浮点型的数组`

IDL> a=make_array(3,2)
IDL> a
      0.00000000      0.00000000      0.00000000
      0.00000000      0.00000000      0.00000000

2.size( )

返回值是维度,列,行,数据类型,数据个数

IDL> size_a=size(a)
IDL> size_a
           2           3           2           4           6

3.typename()

返回变量的类型名

IDL> typename(a)
FLOAT
IDL> typename(size_a)
LONG

4. where

IDL> a=[4,3,6]
IDL> where(a gt 4,count)
           2
IDL> count
           1

(类似于matlab的find函数)

ENVI> a=[[1,2,3],[4,5,6]]
ENVI> a
       1       2       3
       4       5       6
ENVI> index = WHERE(a gt 3, count)
ENVI> index
           3           4           5
ENVI> value=a(WHERE(a gt 3, count))
ENVI> value
       4       5       6
ENVI> 

5.reverse

1-行反转/水平,2-列反转/垂直

IDL> a=[4,3,6]
IDL> where(a gt 4,count)
           2
IDL> count
           1

6.rotate

数组旋转,1-顺时针90°,2-180°中心对称,3-逆时针90°

IDL> a
       1       2       3
       4       5       6
IDL> rotate(a,2)
       6       5       4
       3       2       1      

7.rot

任意角度旋转,第二个参数是角度

IDL> rot(a,90)
% Compiled module: ROT.
       2       2       5
       1       1       4

8.sort

排序,从小到大,返回***索引***数组
上升:a[sort(a)]
下降:a[reverse(sort(a))]

IDL> a=[1,5,3,8,4]
IDL> sort(a)
           0           2           4           1           3
IDL> a(sort(a))
       1       3       4       5       8
IDL> a(reverse(sort(a)))
       8       5       4       3       1

9.UNIQ

相邻唯一值,返回索引数组
唯一上升数组:array[UNIQ(array, SORT(array))]

IDL> a=[1,1,2,5]
IDL> uniq(a)
           1           2           3
IDL> a(uniq(a))
       1       2       5

非相邻 唯一值:

IDL> a=[1,2,1,5,2,3]
IDL> uniq(a)
           0           1           2           3           4           5
IDL> a(uniq(a))
       1       2       1       5       2       3

10.max,min

      最大值,可选参数为最大值的索引
    MAX( Array [, Max_Subscript])

11. total

数据元素总和

IDL> a=[1,2,3]
IDL> total(a)
       6.0000000

12.product

数组元素乘积

IDL> a=[[1,2],[3,4]]
IDL> product(a)
       24.000000000000000

13.mean

均值

IDL> a
       1       2
       3       4
IDL> mean(a)
       2.5000000

14.alog10()

以10为底的对数

IDL> a=[10,100,1000]
IDL> alog10(a)
       1.0000000       2.0000000       3.0000000

15.exp

自然指数

IDL> exp(2)
       7.3890562
IDL> a=[1,2,3]
IDL> exp(a)
       2.7182817       7.3890562       20.085537

16.alog

自然对数
(此处存疑,alog(exp(1))=0.99999999)

IDL> a=[1,2,3]
IDL> alog(exp(a))
      0.99999994       2.0000000       3.0000000
IDL> alog(exp(1))
      0.99999994

17.sqrt

平方根

IDL> a
       4      16       9
IDL> sqrt(a)
       2.0000000       4.0000000       3.0000000

18.指数

IDL> a=[1,2,3]
IDL> a^2
       1       4       9

19.idl_validname

判断变量名是否有效,无效返回值为空或者自动修改

IDL> idl_validname('a')
a
IDL> idl_validname('a_b')
a_b
IDL> idl_validname('a_b c')

IDL> 

20.reform

调整数组的维度,元素个数不变
IDL> a=intarr(10,10,10)
IDL> b=reform(a,20,5)
% REFORM: New subscripts must not change the number elements in A.
% Execution halted at: $MAIN$          
IDL> b=reform(a,200,5)

21.rebin 分辨率变化

类似于分辨率变化,可增大分辨率,可减小分辨率
IDL实用函数_第1张图片
创建图像D,可见其行列数

IDL> D = SIN(DIST(50)/4)
IDL> 
IDL> im = IMAGE(D)
IDL> size(d)
           2          50          50           4        2500

增大其分辨率,(当然,也可减小分辨率)

IDL> d_rebin=rebin(d,250,250)
IDL> image(d_rebin)
IMAGE <66982>
IDL> size(d_rebin)
           2         250         250           4       62500

22.congrid

重采样,类似REBIN

可视化控件

1.dialog_message

默认的dialog_message的dialog type 是warning

IDL实用函数_第2张图片

	dialog_message("Right?", /question, title="Look: ", /cancel)

IDL实用函数_第3张图片

IDL> dialog_message('warning')

IDL实用函数_第4张图片

IDL> dialog_message('error',/error)

IDL实用函数_第5张图片

IDL> dialog_message('info',/information)

IDL实用函数_第6张图片

2.dialog_pickfile

◈ 文件选择,返回值为文件路径
◈ 指定 DIRECTORY 关键字,文件夹选择,返回值为文件夹路径
DEFAULT_EXTENSION 自动增加扩展名;
DIRECTORY 选择文件夹;
FILE 可以使用通配符进行筛选(FILE = ‘sa*’);
FILTER 扩展名设置(FILTER = [’.jpg’, '.tif’, ‘*.png’]);
MULTIPLE_FILES 可以选择多个文件;
PATH 设置初始进去的路径,不指定的话就进到当前的工作空间;
READ 标题为 “Select File to Read”。
WRITE 标题为 “Select File to Write”。

IDL>	dialog_pickfile(title="Select", FILTER = ['*.jpg', '*.tif', '*.png']) 
IDL> 	dialog_pickfile(title="Select", FILTER = ['*.jpg', '*.tif', '*.png'],path='D:\',/multiple_files,/read) 

更多信息,请使用:

IDL>  ?dialog_pickfile

你可能感兴趣的:(idl)