注:
IDL命令行输入:
?函数名
直接查询与该函数有关的所有信息
借鉴博文:https://www.cnblogs.com/alex-bn-lee/p/5782132.html
创建一个n列m行浮点型的数组`
IDL> a=make_array(3,2)
IDL> a
0.00000000 0.00000000 0.00000000
0.00000000 0.00000000 0.00000000
返回值是维度,列,行,数据类型,数据个数
IDL> size_a=size(a)
IDL> size_a
2 3 2 4 6
返回变量的类型名
IDL> typename(a)
FLOAT
IDL> typename(size_a)
LONG
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>
1-行反转/水平,2-列反转/垂直
IDL> a=[4,3,6]
IDL> where(a gt 4,count)
2
IDL> count
1
数组旋转,1-顺时针90°,2-180°中心对称,3-逆时针90°
IDL> a
1 2 3
4 5 6
IDL> rotate(a,2)
6 5 4
3 2 1
任意角度旋转,第二个参数是角度
IDL> rot(a,90)
% Compiled module: ROT.
2 2 5
1 1 4
排序,从小到大,返回***索引***数组
上升: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
相邻唯一值,返回索引数组
唯一上升数组: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
最大值,可选参数为最大值的索引
MAX( Array [, Max_Subscript])
数据元素总和
IDL> a=[1,2,3]
IDL> total(a)
6.0000000
数组元素乘积
IDL> a=[[1,2],[3,4]]
IDL> product(a)
24.000000000000000
均值
IDL> a
1 2
3 4
IDL> mean(a)
2.5000000
以10为底的对数
IDL> a=[10,100,1000]
IDL> alog10(a)
1.0000000 2.0000000 3.0000000
自然指数
IDL> exp(2)
7.3890562
IDL> a=[1,2,3]
IDL> exp(a)
2.7182817 7.3890562 20.085537
自然对数
(此处存疑,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
平方根
IDL> a
4 16 9
IDL> sqrt(a)
2.0000000 4.0000000 3.0000000
IDL> a=[1,2,3]
IDL> a^2
1 4 9
判断变量名是否有效,无效返回值为空或者自动修改
IDL> idl_validname('a')
a
IDL> idl_validname('a_b')
a_b
IDL> idl_validname('a_b c')
IDL>
调整数组的维度,元素个数不变
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)
类似于分辨率变化,可增大分辨率,可减小分辨率
创建图像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
重采样,类似REBIN
默认的dialog_message的dialog type 是warning
dialog_message("Right?", /question, title="Look: ", /cancel)
IDL> dialog_message('warning')
IDL> dialog_message('error',/error)
IDL> dialog_message('info',/information)
◈ 文件选择,返回值为文件路径
◈ 指定 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