人生的意义就是思考其意义分享 http://blog.sciencenet.cn/u/qianlivan 天体物理工作者,家乡云南昆明。

博文

用IDL生成某个分布的二维数组

已有 10398 次阅读 2010-10-27 14:27 |个人分类:总结|系统分类:科研笔记|关键词:学者| 编程

假定把一个多维(这里说二维的)数组的指标看作坐标,要让每个元素表示某个函数在相应坐标的值应该怎么办?循环当然是可以的,不过其实没有必要,因为这些坐标都是有规律地排列的,IDL自有处理的方法。

对于一维数组而言,IDL自然就可以生成一个数组,每个元素的值就是其指标值。
IDL> a = lindgen(n)
有了这样一个数组,下面的操作就和操作一个元素是一样的,比如要生成一个存指标的平方值的数组。
IDL> b = a^2

那么对于二维数组应该怎么办呢?我想到的办法是生成两个数组,一个数组的每个元素存其行指标,另外一个数组的每个元素存其列指标。具体实现可以作如下操作。
IDL> a = lindgen(n,m)
IDL> y = a/n
IDL> x = a-y*n
如此之后将x和y两个和a大小相同的数组当作a的x坐标和y坐标处理就可以了。比如要生成一个高斯函数。
IDL> gauss = exp(-(x^2+y^2))

多维数组可以类推。这样处理可以比循环快很多,尤其是多维的时候,不过显而易见,存储量增大了很多,这就是代价。

https://m.sciencenet.cn/blog-117333-377644.html

上一篇:IDL画LAB巡天全天中性氢分布图
下一篇:CUPID FINDCLUMPS拟合分子云核(一)

0

该博文允许注册用户评论 请点击登录 评论 (1 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-6-17 11:21

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部