1、IDL中一些重要的函数(1)

没有认真的使用过这些函数,你就不知道它们有多重要

------------------------------------------------------------------------

1、信息获取

1.1 Size()函数

1.1.1功能

Size()函数能够获得数组的相关信息

1.1.2调用格式

其调用格式为Result=Size(变量,[/keywords])

2、条件查找

2.1 WHERE()函数

2.1.1功能

WHERE()函数能返回数组中满足指定条件的元素下标

2.1.2调用格式

其调用格式为Result=WHERE(数组表达式,[,count][,complement=变量1][,/L64][,ncomplement=变量2])
Result的值代表的是满足条件的元素的位置(从0开始的位置)

2.1.3范例

PRO get_position
  a=[[2,6,6],[3,15,2],[5,10,2],[3,9,4]]
  print,a
;  Where()可以返回满足条件的元素的下标
  result=Where(a EQ 15,count,complement=res_c,ncomplement=res_n)
  print,result;比如数组中15对应的下标为4
  print,count;满足条件元素的个数
  print,res_c;不满足条件元素的位置
  print,res_n;不满足条件元素的个数
  print,a[result];用于检查where()函数的结果是否正确
END

3、调整大小

3.3 Reform()函数

3.3.1功能

可以在不改变数组元素个数的前提下改变数组的维数

3.3.2调用格式

其调用格式为Result=Reform(Array,D1 [,...,D8][,关键字])

IDL> arr=indgen(10,10,10)
IDL> print,arr

第一个数组
……省略中间8个数组
第10个数组

3.4 Rebin()函数

3.4.1功能

可以修改数组大小,修改后数组的行数或列数必须是原数组行数或列数的整数倍
默认抽样算法是双线性内插
问题:什么是双线性内插??

3.4.2调用格式

其调用格式为Result=Rebin(数组,D1 [,...,D8][,Sample])
其中,Sampe为使用最邻近值抽样算法

- 双线性内插的结果如下

rebin函数的结果

- 最邻近内插的结果如下
最邻近差值法的结果

3.5 Congrid()函数

3.5.1功能

可以将数组调为同维任意大小

3.5.2调用格式

其调用格式为Result=Congrid(数组,x,y,z [关键字])
其中,Sampe为使用最邻近值抽样算法
例子如下:
该函数处理一维或二维数组时,默认用的是最邻近重采样

3.6 Interpolate()函数

3.6.1功能

可以将数组调为同维任意大小,【并支持任意定位差值】
后面的部分是有别于Congrid函数的部分

3.6.2调用格式

其调用格式为Result=Congrid(数组,x [,y [,z] ] [关键字])
其中,x [,y [,z] ]为待调整数组下标索引,可以是单个变量或数组。
例子如下:
在这里插入图片描述

  • 结束

4、数组反转

4.1 Reverse()函数

4.1.1功能

可以对数组进行反转

4.1.2调用格式

其调用格式为Result=Reverse(数组,index [,/overwrite])
其中,index数组的维数索引
例子如下:
在这里插入图片描述
行进行了反转

5、数组转置

5.1 Transpose()函数

5.1.1功能

可以对数组进行转置

5.1.2调用格式

其调用格式为Result=Transpose(数组,[P])
其中,关键字P为数组需要调整的数组列表,如果不设置,则完全反转
例子如下:
在这里插入图片描述
在这里插入图片描述
其列数没变,但是数组的行变为4行,共有3个这样的数组
具体的操作为:取原数组的第一行为新数组的第一个数组,依次类推,共生成了3个数组

6、数组旋转

6.1 Rotate()函数

6.1.1功能

可以以90°的倍数对数组进行旋转

6.1.2调用格式

其调用格式为Result=Rotate(数组,Direction)

6.2 Rot()函数

6.2.1功能

可以以任意角度对图像进行旋转,同时能进行方法和缩小控制

6.2.2调用格式

其调用格式为Result=Rot(数组,Angle,[Mag,X0,Y0],[关键字])

7、数组平移

7.1 Shift()函数

7.1.1功能

可以基于指定平移量S1……Sn对数组进行第1……n维平移,其中,Si为正表示向前平移,Si为负表示向后平移

7.1.2调用格式

其调用格式为Result=Shift(数组,S1…Sn)
其运行结果如下:
一维数组的移动

8、数组排序

8.1 Sort()函数

8.1.1功能

实现该数组的排序功能,返回结果是排序后数组的下标索引

8.1.2调用格式

其调用格式为Result=Sort(数组,[/L64])
其运行结果如下:
在这里插入图片描述

9、求不同值

9.1 Uniq()函数

9.1.1功能

返回数组中相邻元素不同值的索引

9.1.2调用格式

其调用格式为Result=Uniq(数组 [,索引])
具体内容待用到补充

10、判断数组

10.1 Array_Equal()函数

10.1.1功能

用来判断两个数组是否完全相同

10.1.2调用格式

其调用格式为Result=Array_Equal(数组,/关键字)
Result返回值为0或1,关键字No_TypeConv用于将两数组转换为同一类型判断数据元素是否相同,为1时可以直接比较

11、求元素个数

11.1 N_Elements()函数

11.1.1功能

用来计算数组元素个数

11.1.2调用格式

其调用格式为Result=N_Elements(数组)
补充:
The INTARR function returns an integer vector or array
I = INTARR(3, 3)
Create I, a 3-element by 3-element integer array with each element set to 0 by entering
在这里插入图片描述

12、求最大值

12.1 Max()函数

12.1.1功能

用来计算数组元素元素中的最大值

12.1.2调用格式

其调用格式为Result=Max(数组 [,关键字],min=变量1)

13、求最小值

13.1 Min()函数

13.1.1功能

用来计算数组元素元素中的最大值

13.1.2调用格式

其调用格式为Result=Min(数组 [,关键字],min=变量1)
Max()函数类似

14、求和

14.1 Total()函数

14.1.1功能

用来计算数组中所有元素或者部分元素的和

14.1.2调用格式

其调用格式为Result=Total(数组,Dimension,[,关键字])
Dimension为求和元素的行列控制

  1. 可以计算数组总和
  2. 可以累积求和(/cumulative
  3. 可以按行求和
  4. 可以按列求和

15、乘积计算

15.1 Product()函数

15.1.1功能

用来计算数组中所有元素或者部分元素的乘积

15.1.2调用格式

其调用格式为Result=Product(数组,Dimension,[,关键字])
Product和Total的函数基本一致

16、阶乘计算

16.1 Factorial()函数

16.1.1功能

用来计算N的阶乘

16.1.2调用格式

其调用格式为Result=Factorial(数组,[,关键字])

17、平均值计算

17.1 Mean()函数

17.1.1功能

用来计算数组元素的平均值

17.1.2调用格式

其调用格式为Result=Mean(数组,[,关键字])

18、方差计算

18.1 Variance()函数

18.1.1功能

用来计算数组元素的方差

18.1.2调用格式

其调用格式为Result=Variance(数组,[,关键字])

19、标准差计算

19.1 Stddev()函数

19.1.1功能

用来计算数组元素的方差

19.1.2调用格式

其调用格式为Result=Stddev(数组,[,关键字])

20、平均值、方差、倾斜度及频率曲线峰态计算

20.1 Moment()函数

20.1.1功能

用来计算数组元素的平均值、方差、倾斜度及频率曲线峰态计算

20.1.2调用格式

其调用格式为Result=Moment(数组,[,关键字])
倾斜度及频率曲线峰态
这两个概念不清楚

21、矩阵运算

矩阵和数组最大的区别

矩阵的元素是数,而数组的元素还可以是字符或其他类型
因此,矩阵可以算是数组的子集

22、不改变原数组元素个数来改变矩阵行列

Reform函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值