preliminary

IDLを使い始める前に今後のための準備をしておきます。 まず以下のファイルを'idl_startup.pro'という名前で保存します(.proはIDL関数のファイルであることを示しています)。

DEVICE,DECOMPOSED=0,TRUE_COLOR=24,RETAIN=2
LOADCT,39

次にidlの設定ファイルを置く場所をきめます。ここでは'~/idl/'としておきましょう。 このファイルを'~/idl/下に保存します。
次にidlパスの設定です。IDL起動時に先ほど作ったidl_startup.proを読み込むための設定と 今後自分で作ったIDL関数(プロシージャ)を保存しておく場所をきめます。 今回はこの保存場所も'~/idl/'下にしておきましょう。.bashrcに以下の行を追加します。

export IDL_PATH=${IDL_PATH}:~/idl
export IDL_STARTUP='~/idl/idl_startup.pro'

トップへ戻る

起動からプロットまで

まずはコマンドから'idl'とタイプしてidlを起動します。すると'IDL>'というプロンプトが現れます。この状態で色々な関数をつかってプロットしていきます。まずはsin関数をプロットしてみます。

IDL> x=findgen(100)*0.1
IDL> plot, x, sin(x), xrange=[0, !pi]

1行目ではxという100個の要素を持った配列を用意します。このとき'findgen'関数は引数の大きさの配列をつくり、その中には0から順番に1, 2, 3,という値が入ります。なおIDLでは配列はC言語のように0から始まるため、この場合0-99までの値が入ります。さらに後ろで0.1をかけているので0-9.9までの値を持つ要素数100の配列xが作られることになります。

2行目ではy=sin(x)というプロットを書いています。最後のxrangeはx方向の範囲を表し、'!pi'は円周率でIDLの組み込み関数です。同様にy方向に範囲を設定したい場合はyrangeを用います。

IDLの基礎は以上です。しかし毎回このようにコマンドでうつのは大変なのでプログラムを作って読み込むこともできます。この場合は先のコマンドを羅列したものをファイルに保存し(例えばtest.pro)、IDLを起動したらファイルを読み込めばおなじことが出来ます。 ファイルの読み込みには'.r'コマンドを用います(e.g., IDL> .r test)。このときは.proは省略可能です。

トップへ戻る

データの読み込み

実際に使うにはIDLで全てのデータ処理を行うのではなく計算機等で出力したデータを解析することに用いることが多いでしょう。ここではFortranによって出力したデータを読み込む方法を照会します。データ読み込みはめんどくさいので以下のプロシージャを使います。


;+
; NAME: getdata
; 
; PURPOSE: read data for binary file
;
;
; CALLING SEQUENCE:readdata,x,filename,flag
;
; INPUTS: x - array for store the data
;         filename - file path and name
;         flag - if flag=0, data is written by intel computer (small
;                endian)
;                if flag=1, data is written by unix computer (big
;                endian)
;
; KEYWORD PARAMETERS:
;          x        - array
;          filename - file path and filename
;          flag     - flag for endian
;
;  PROCEDURE: getdata.pro
;
;  EXAMPLE: IDL> getdata, x,filename,flag
;
;  MODIFICATION HISTORY: 2006, 12/20 H.Takahashi
;              
;-

pro getData,x,file,flagEndian
case flagEndian of
    0:begin
        openr,lun,file,/f77_unformatted,/get_lun
        readu,lun,x
        free_lun,lun
    end
    1:begin
        openr,lun,file,/get_lun,/f77_unformatted,/swap_if_little_endian
        readu,lun,x
        free_lun,lun
    end
    2:begin
        openr,lun,file,/get_lun
        readf,lun,x
        free_lun,lun
    end
endcase

return        
end
				   

まずは何も考えずにこのファイルをgetdata.proという名前で保存し、~/idl下に保存します。 保存したら使い方です。

getdata, x, 'filename', flag

xは適当な変数です。例えばファイルが(200, 100)の配列を出力したものであれば x=fltarr(200,100)としてからgetdata.proを用います。 次のfilenameはそのままファイル名です。このfilenameは今いるディレクトリからの相対パスで書きます。 最後のflagですが整数を代入します。それぞれflag=0: asciiデータ、flag=1: little endianのbinary (fortranファイル)、flag=2: small endianのbinary (fortran)ファイルを読み込みます。

トップへ戻る

Hiroyuki R. Takahashi