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

博文

IDL极简教程

已有 18044 次阅读 2013-4-20 19:37 |个人分类:知识|系统分类:教学心得| 编程, IDL

0. 前言
      之前我在博客里记过一些IDL相关的笔记,现在看来依然有用,但是比较零散(比如,处理数组中的NaN值,找到数组中最大值的指标http://blog.sciencenet.cn/blog-117333-299315.html,在命令行(shell)中直接运行IDL脚本http://blog.sciencenet.cn/blog-117333-305128.html,生成满足某个分布的二维数组http://blog.sciencenet.cn/blog-117333-377644.html,画全天的中性氢分布图http://blog.sciencenet.cn/blog-117333-377237.html,查看光谱
运行简单的IDL脚本
读FITS二进制表
写FITS文件
处理字符串
颜色表操作
画多个子图
创建窗口
读大数据表
曲线拟合时限定参数范围
http://blog.sciencenet.cn/blog-117333-671768.html,),有必要整理一下。如今,网上有太多的关于IDL的文章、教程,我再写个教程对于大多数人而言应该是没有意义的,但是我仍希望写点东西给自己看,毕竟好记性不如烂笔头。而且,为了避免混乱,关于IDL,我不想再开新贴了。本教程不定期更新,牛人请绕道。
       本教程除了告诉可以做什么之外,还告诉不可以做什么。自从听过软件管理的讲座以后,我越来越觉得错误比正确有价值——要不然计算管理体系文件的价值的时候为什么按照失败的次数来算呢?
1. 常用操作
(1) 用sort排序
    IDL> a=[1.5,2.6,0.1,10.0,5.0]
    IDL> sort(a)
    程序将返回排序之后的“数组指标”,即每个数在原来数组中的位置,而不是数字本身。
(2) 用where函数寻找数组中满足某判据的数
     IDL> a=findgen(10)^2
     IDL> where(a gt 25)
     程序范围的将是数组a中大于5的数的“数组指标”,而不是数字本身!返回数组指标比返回数组本身有用得多,因为从指标得到数比反过来容易。但是这还不是最好的做法,因为返回指标的时候,有些数就被扔掉了。我见过最好的做法是matlab的做法,matlab在进行类似操作的时候返回的是一个和原数组同样大小的逻辑值数组,满足条件的位置为1,其他地方为0。
2. 常见错误
(1) 把整数当作浮点数放到分母里做除法
      IDL> print,2/4
      结果是0,而不是0.5,因为这里是整数除法,得到的也是整数。
(2) 不同变量的变量名重复(注意IDL不区分大小写)
      这通常发生在变量名命名不规范的程序中。这一条主要是写给我自己看的。我的程序里会用到光速,我将其叫做c。随后,我从三个FITS文件中读入数据到三个数组,偷懒,我就分别取为a、b、c。然后,就没有然后了。
(3) 在某些字体中,l和1长得一样,O和0长得一样,不注意就会导致错误。

(4) variance(a)计算的是数组a的方差,方差不是均方根!

(5) 查看结构体的属性要用

IDL> help,a,/str

IDL> help,a

看不到结构体中的变量名。


示例程序

tut1.pro

tut2.pro

tut3.pro

tut4.pro




https://blog.sciencenet.cn/blog-117333-682225.html

上一篇:科研的可继承性
下一篇:微分方程与预报
收藏 IP: 159.226.169.*| 热度|

3 李宇斌 周渝涛 汪宪钰

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

数据加载中...

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

GMT+8, 2024-4-25 20:30

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部