IDL中创建矢量或数组(三)

    假设想读出刚才建立的数组中位于第一列第二行的元素(元素的值为4),可以键入:

    ENVI>print,array[0,1]

    注意,下标的顺序先是列标,后是行标。这正好与已习惯的线性代数中的矩阵或行列式相反(同时,行标与列标比想象的小1,因为排列下标值的起始值是0而不是1)。

    -行下标源于对海量图像数据处理的要求,IDL最初就是为处理这种数据而开发的。数据中的一行对应图像的一个独立扫描行。这种数据存储形式使数据操作迅速而精确。当然,也有其他的软件刚好相反,采用行优先的方式,这就要求读者在不同软件之间转换数据时考虑到这一点。

    可以使用一维下标来存取该数组中的每一个元素。要知道数组元素是以行顺序存储的,所以获得数组中的第四个元素。可以键入以下语句来存取:

    ENVI>print, array[3]

    用一维下标可以存取多维数组中的元素,这是IDL语言的一个强大的工具。

    也可以用一维向量来做数组的下标。例如,倘若要存取数组中的第一,二,四和第六个元素,可键入:

    ENVI>indices=[0,1,3,5]

    ENVI>print,array[indices]

    IDL可很容易地从数组内提取出矢量和子数组。例如:查看这个拥有随机数据的数组:

    ENVI>data = randomU(seed, 10, 20)

    想提取出第6-10列和第12-15行的数据,可键入:

    ENVI>subarray = data[5:9, 11:14]

    如果要将第8列的数据画出来,可以使用下标“*”代表所有的行,如下所示:

    ENVI>plot, data[7,*]

    要取出一个第14行的矢量,键入:

    ENVI>vector = data[*,13]

    要提取出一个数据为数组中最后5行的数组,键入:

    ENVI>subarray = data[*,15:19]

    ENVI>help, subarray

    现在可以看到子数组是一个10*5行的数组。

    同样可以用“*”代表剩下的所有数据。例如,用数组的最后5列建立一个子数组,也可键入:

    ENVI>subarray = data[5:*,*]

    ENVI>help, subarray

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值