天文萌宠--IDL笔记1:数组的类型与创建

bindgen : 创建一个字节型数组,数值等于其序号,如[0,1,2,3,......]。

bytarr : 创建一个字节型数组,每个元素的初始值为0。

cindgen : 创建一个复数型数组,实部数值等于其序号。

complexarr: 创建一个复数性数组,实部和虚部数值都等于0。

dblarr : 创建一个双精度型数组,每个元素的初始值为0。

dcindgen : 创建一个双精度复数数组,实部数值等于其序号。

dcomplexarr : 创建一个双精度复数数组,每个元素的初始值为0。

dindgen : 创建一个双精度数组,每个元素数值等于其序号。

findgen : 创建一个浮点型数组,每个元素数值等于其序号。

fltarr : 创建一个浮点型数组,每个元素的初始值为0。

identity : 创建一个恒等数组,对角线上的元素为1 ,其他元素为0。例如a = indentity(4) 那么a =

     1.00000      0.000000     0.000000     0.000000
     0.000000      1.00000       0.000000     0.000000
     0.000000     0.000000      1.00000       0.000000
     0.000000     0.000000     0.000000      1.00000
indgen : 创建一个整型数组,每个元素数值等于其序号。

intarr : 创建一个整型数组,每个元素的初始值为0。

L64INDGEN :创建一个64字节整型数组,每个元素数值等于其序号。

LINDGEN :创建一个长整型数组,每个元素数值等于其序号。

lon64arr : 创建一个64字节整型数组,每个元素的初始值为0。

lonarr : 创建一个长整型数组,每个元素的初始值为0。

make_arry : 创建一个给定数据类型,维数和初始值的数组。

objarr : 创建一个对象数组。

ptrarr : 创建一个指针型数组。

replicate : 创建一个数组,给定维数和数值。

sindgen : 创建一个字符串数组,每个元素等于其序号。

strarr : 创建一个字符串数组,初始每个元素的长度为0。

timegen : 创建一个双精度浮点型数组,每个元素表示儒略日期。

uindgen : 创建一个无符号整型数组,每个元素等于其序号。

uintarr : 创建一个无符号整型数组,每个元素的初始值为0。

ul64indgen : 创建一个无符号64字节整型数组,每个元素等于其序号。

ulindgen : 创建一个无符号长整型数组,每个元素等于其序号。

ulon64arr : 创建一个无符号64字节整型数组,每个元素的初始值为0。

ulonarr :创建一个无符号长整型数组,每个元素的初始值为0。



1.赋值创建:   数组可以在IDL命令行中建立。建立一个两行三列的数组,如下所示:
    IDL> array=[[1,2,3],[4,5,6]]
    IDL> IDL> help,array
   ARRAY  INT= Array[3, 2]
2.函数创建
2.1创建全零和索引数组

1.  特定函数
    可以用IDL的特定函数进行全零数组或索引数组的创建,

2?1不同类型的数组创建方式

数据类型

创建全0数组

创建索引数组

字节型

bytArr()

bindgen()

16位有符号整型

intarr()

indgen()

32位有符号长整型

lonarr()

lindgen()

64位有符号整型

lon64arr()

l64indgen()

16位无符号整型

uintarr()

uindgen()

32位无符号长整型

ulongarr()

ulindgen()

64位无符号整型

ulon64arr()

ul64indgen()

浮点型

fltarr()

findgen()

双精度浮点型

dblarr()

dindgen()

复数

complexarr()

cindgen()

双精度复数

dcomplexarr()

dcindgen()

字符串

strarr()

sindgen()

指针

ptrarr()

 

对象

objarr()

 

例如,创建100×100初始值为零的字节型数组,输入:
      IDL>array=BytArr(100,100)
        创建一个有100个元素的浮点型矢量,初始数值为从0到99,输入:
     IDL>vector=FIndGen(100) 
2.常规函数
    MAKE_ARRAY()函数
    调用格式为Result = MAKE_ARRAY ( [D1 [, ..., D8]] [, 关键字] [, /INDEX] [, DIMENSION = vector] [, /NOZERO] [, SIZE=vector] [, TYPE=type_code][, VALUE=value] )
    通过关键字的控制可以实现表2-1的函数的功能。
M = MAKE_ARRAY(3, 4, /INTEGER, VALUE = 5)
IDL> help,m
M INT = Array[3, 4]
IDL> print,m
5 5 5
5 5 5
5 5 5
5 5 5
2.2创建特殊数组
1.RANDOMU()函数
    RANDOMU函数返回一个或多个均匀分布的浮点型数组,元素值在[0,1]之间。
    Result = RANDOMU( Seed [, D1 [, ..., D8]] [ [, BINOMIAL=[trials, probability]] [, /DOUBLE] [, GAMMA=integer{>0}] [, /NORMAL] [, POISSON=value] [, /UNIFORM] | [, /LONG] ] )
    通过关键字的控制可以随机生成满足条件的随机数。
2.RANDOMN()函数
    RANDOMN函数返回一个或多个正态分布的浮点型数组,这些数的平均为零,标准偏差为1 。 
    Result = RANDOMN( Seed [, D1 [, ..., D8]] [ [, BINOMIAL=[trials, probability]] [, /DOUBLE] [, GAMMA=integer{>0}] [, /NORMAL] [,    POISSON=value] [, /UNIFORM] | [, /LONG] ] )
    通过关键字的控制可以随机生成满足条件的随机数。
使用数组
1.数组的存储
IDL中的矢量和数组均是以行顺序存储的(IDL最初是设计用来处理行扫描的卫星数据),而且注意,下标的顺序先是列标,后是行标。这正好与已习惯的线性代数中的矩阵或行列式相反(下标值的起始值是0)

1.1一维数组的存储
一维数组arr[m]的存储方式:
arr[0] → arr[1] →… → arr[m-1]
1.2二维数组的存储
m*n的二维数组arr[m,n]的存储方式:
    arr[0,0] → arr[1,0] → arr[2,0]…arr[m-1,0] →
    arr[0,1] → arr[1,1] → arr[2,1]…arr[m-1,1] →
    …
arr[0,n-1] → arr[1, n-1] → arr[2, n-1]…arr[m-1, n-1]
IDL> array = indgen(4,3)
IDL> print,array
    0 1  2  3
4 5 6 7
  8  9 10  11

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值