假定把一个多维(这里说二维的)数组的指标看作坐标,要让每个元素表示某个函数在相应坐标的值应该怎么办?循环当然是可以的,不过其实没有必要,因为这些坐标都是有规律地排列的,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://blog.sciencenet.cn/blog-117333-377644.html
上一篇:
IDL画LAB巡天全天中性氢分布图下一篇:
CUPID FINDCLUMPS拟合分子云核(一)