IDLのメモページ


役に立つリンク


京大の渡辺さんのIDLメモページ。


Googole GroupのIDL ユーザーのためのフォーラム。

IDLで.savファイルを作って、ローカルで計算をやりたいときは、これを使えば良い。

GNU IDL。誰か使ったら、使いごこちを教えてください。

コメントアウト

コメントアウトは
print, 'Hello world' ; this is comment
のように、セミコロンを使えば良い。

複数行にわたってコマンドを書く

この場合は、
print, 'Alternative words of hoge are', $
''fuga and homu'

Unixのコマンドを打ちたい

IDL上でunixのコマンドを打ちたいとき、たとえばlsをしたいときは、

IDL>$ls

というように、最初に$を入れる。

helpを表示したい

なにかわからないことがある場合は
IDL>?
と打てば、ヘルプウィンドウが開かれる。そこで調べればよい。コマンドについて調べたい時(unixで言うところのman command_name)は、
IDL>? command_name

と打てば良い。

値を代入する

xに3という値を代入したいときは、

IDL>x=3

というようにする。

値を表示する

先ほどのxに、どんな値がはいっているかが気になるときは、

IDL>print, x

で、xの値が表示される。

どんな変数か確認する


IDL>help, x

と打つと、その変数の型と行列数が表示される。

小数点以下をいろいろと丸める

小数点以下四捨五入するときはround,
小数点以下小さい方に揃えるときはfloor,
小数点以下大きい方に揃えるときはceilを使う。
具体的には、
IDL> x=5.6
IDL> print,round(x),floor(x),ceil(x)
6 5 6
となる。

配列を作る

配列をつくるときは、make_arrayというのが使える。
IDL>hoge = make_array(3, 2, /index, /int)
IDL>print, hoge
0 1 2 3 4
5 6 7 8 9
10 11 12 13 14

みたいな感じ。

arrayの表示

printを使っていろいろな表示の仕方がある。IDLは、indexのはじまりは0からである。たとばえ、

IDL> arr = indgen(5) * 3
IDL> print, arr
0 3 6 9 12
IDL> print, arr[0:3]
0 3 6 9
IDL> print, arr[2]
6
IDL> print, arr[*]
0 3 6 9 12
IDL> print, arr[1:*]
3 6 9 12

みたいな感じ。

regression lineの傾きと切片を求める

2つのパラメータの相関関係が線形であるとき、その線形関係(f(x)=a+bx)のa, bを求めるコマンドがある。
SIXLINコマンドというのがあり、くわしくは
http://www.astro.washington.edu/docs/idl/cgi-bin/getpro/library01.html?SIXLIN
を参考にすること。

2つの相関の強さを求めたい

2つの相関がどれだけ有意なのか、というのを求めるテストとして、Spearman's rank testというのがある。IDLでその相関係数と
null hypothesis probabilityを求めることができる。
R_correlateについてhttp://idlastro.gsfc.nasa.gov/idl_html_help/R_CORRELATE.html
P_correlateについて
http://idlastro.gsfc.nasa.gov/idl_html_help/P_CORRELATE.html

KS test

IDLはKS testもできる。
KSONE, KSTWOの2つがある。
KSONE
http://idlastro.gsfc.nasa.gov/ftp/pro/math/ksone.pro


IDLでFitting

スペクトルデータやSEDを特定の関数でfittingしたいときにも、IDLは便利である。
ここのMPFITの解説ページに詳細が載っているので、参考にするとよい。

関数の定義

基本的には、exprという関数を自分で定義する。たとえば、横軸波長[um], 縦軸[Jy]のときに、銀河のとあるSEDを黒体輻射の関数でfittingを行いたい場合は、
expr = 'P[0]*(X+P[2])^(-3)/(exp(14390/(P[1]*(X+P[2])))-1)'

のように、fittingしたいパラメータを、P[n] (n=0,1,2,…)で置いてやればよい。今の場合、P[0]はnormalization, P[1]は温度、P[2]はredshiftである。

初期値の設定

その後、初期値を設定する。
start=[1000.0, 2300.0, 0.102]
と書いてやると、左からそれぞれ、P[0], P[1], P[2]の初期値になっている。

パラメータの値の制限

初期設定では、パラメータは自由に動くことができて、現実にそぐわない結果がでることがあるかもしれない。そのような場合は、各パラメータの状況に応じて、値を固定したり、値の動くことができる領域を制限したりすることが必要になる。今回の場合、redshiftは銀河一個ずつ決まっているものなので、値を固定したいし、黒体輻射の温度Tは、非常に高音成分をトレースしたいので、T>1500Kの下限値を儲けたい、ということにしてみる。

パラメータを固定 (fix)

最終更新:2013年05月20日 19:07