update :: 09.12.02

+ Tamazawa's Web / IDL+

□更新情報

>:12.08.22 追加(textoidl,path)

>:11.10.20 追加(制御、slicer3)

>11.04.28 追加

>11.02.02 追加

>10.09.07 tool開設に伴い移動

>09.12.02 top更新

注意

あくまで現在の課題研究で利用した操作のメモであるので、一部一般的ではない 記述がある可能性があります。また、基本的に数値計算で得られたデータの 可視化を想定しており、fitsデータの処理などはフォローしていません。 あらかじめご了承ください。

pathを通す

計算機管理者にあらかじめIDLプロシージャ(*.proとなっているもの) のパスをどのように設定するか聞いておく。大抵.bashrcか.cshrcに書き込む ことになるので、許可をとったうえで、他の利用者の設定をそのままコピー するのも一つの手。

(.cshrcの場合の例(ディレクトリ名は適当です))

setenv IDL_PATH +/path/to/idl/:+${HOME}/IDL/

setenv IDL_STARTUP +/path/to/.idl.startup

自作のプロシージャを参照する場合などは適宜pathに追加。

システムによっては書き換え不可のところもあるので、その場合は 使うたびに上のコマンドを入力。

プログラムの実行

.r rddt

 一般的に数値計算などで得られたデータを読み込むときは rddt.proを実行させることが多い。rddtはおそらくReaD DaTaの略。 それ以外でもあらかじめプログラムを書いておいてそれを走らせた ければ上のrddtをファイル名にすればよい。

.r

 その場で実行したいときは上のようにしてそのあとに プログラムを打ち込む。

rddt.proの書き方

準備中

プロット

plot,x

xが1次元配列の場合、横軸にi、縦軸にx[i]がプロット される。

plot,xx,xy

xx、xy、それぞれ1次元配列の場合、横軸にxx[i]、縦軸にxy[i] が表示される。

plot_io,xx,xy,xrange=[1,2.5],yrange=[-4,4]

iで通常表示、oで対数表示。ただしiiはなし。xrange,yrangeで範囲設定。

oplot,xx,xy

そのまえに描いたグラフに上書きする。xrangeなどは指定できない。

,yminor=1,yticks=1,ytickname=[' ',' ']

y軸に値、目盛を書きたくない場合。ythcknameの引用符の中は空白を入れる。

ウィンドウの操作

erase

画面上のグラフなどを消去(ウィンドウは残ったまま)

window,3,xs=300,ys=600

番号3の新しいウィンドウを作成。xs、ysはウィンドウのサイズ指定

wdelete,3

番号3のウィンドウの消去

制御文

基本的にCやfortranと同様。ただし、配列などは0から割り振られるので注意。

for i=0,nx-1,10 do begin

(各種操作)

endfor

繰り返し等の操作。0からnx-1まで10ごとに実行。

if a eq b then begin

(各種操作)

endif elseif begin

(各種操作)

endelse

条件分岐。条件が一つだけならelseif以降はもちろん不要。

if文に使えるのは以下の通り。

 

eq (equal)ne(not equal) gt (greater than) ge (equal or greater than) lt (less than)le(equal of less than)

not and or xor

他にwhile,repeat,case,switch,gotoなど(後日記載)

カラーの制御

loadct

カラーパレットの番号一覧が表示される。数字を入力して設定。 直接設定するときはloadct,39などとする。

devisce,decompose=0

実際に表示させる画面反映させるには0を、gifファイルなどに出力前には1を指定。

GIFアニメの作成

.r

for i=0,9 do begin

plot,x,data[i].y

write_gif,'graph1.gif',tvrd(),/multi

endfor

write_gif,'graph1.gif',/close

end

data[0]からdata[9]までのデータを取り出してグラフを描き、順番に表示させる。

この状態でpowerpointなどに直接貼り付けると一回のみの再生になることがある ので、一度ファイルを分割してからループ回数を指定して再度まとめるとよい。

PSファイルへの出力

set_plot,'ps'

device,filename='graph2.ps',xsize=10,ysize=20

(グラフの操作)

device,/close_file

set_plot,'x'

最後の操作は出力先をxwindowに戻すためのもの。

二次元イメージ・1

tv,vx[39,*,*]

三次元配列vxに対し、第1成分が39の場合の第2、第3成分での値を濃度で表示

tvscl,vx[39,*,*]

上記のものを規格化して表示

プロファイル

profiles,reform(vx[39,*,*])

tvsclなどで二次元データを表示させた後、マウスを動かすことで値の 変化を確認することができる。左クリックで縦軸横軸の切り替え、右 クリックで終了。

二次元イメージ・2

contour,reform(pr[*,*,89]),x,y,/fill,/iso,nlevels=60

まず三次元配列をreformで二次元化(行列化)。それに対する等高線をcontourで 表示。等高線の数をnlevelで指定。,/fillで塗りつぶし。

polar_contour,alog10(transpose(reform(pr[*,89,*]))),float(z),float(x),/fill,nlevels=60,/iso

極座標の場合。transposeは転置行列にするコマンドである。floatで半精度に落としてある。 theta,r,zの順になっているので注意。

ベクトルの表示

velovect,u,v,x,y

u,vは二次元配列。それぞれベクトルのx成分、y成分でi個、j 個の成分数。xはi個、yはj個の一次元配列。

arrow,a,b,c,d,/data

座標(a,b)から(c,d)への矢印を描く。直交座標以外のベクトル表示についてはこれで代用できる。 ./dataですでに描かれているグラフ上で描図。デフォルトだと左下を原点に取る。

流線の表示

vel,u,v,length=1,nsteps=200

u、vは二次元配列。lengthで長さ、nstepsで一本に含まれる要素数。座標、色は指定できない。

三次元イメージ

surface,zz,xx,yy,shade=data,ax=30,az=150,zaxis=2,/horizontal

2次元配列zzに対し、同じく二次元配列xx、yy(一次元配列でも可)を 二軸とするような平面から高さzzの点をプロットするイメージ。shadeは影つけ。これをデータと関連させた色をつける ことで三次元イメージが簡単にできる。ただし荒い。ax、azは見る角度。zaxisはz軸の表示位置。horizontalで 格子状の表示でなく曲線の集合表示になる。

hdata=ptr_new(reform(ro[*,*,*,10]),/no_copy)

slicer3,hdata

3次元データについて3次元イメージで可視化。 上の例ではreformで3次配列に直している。 最初の文はポインタ処理。実行で別ウィンドが開きそこで 処理。基本的に直交座標系のみ。

コマンド操作

$

一旦IDLを抜けてunixの操作が可能。.proをいじりたくなった場合使える。IDLに 戻る時はexitで。

retall

起動したての状態にもどる。IDL上で設定した変数が消えるので注意。

一枚に複数の図を載せる

!p.multi=[0,1,4]

(グラフを描く操作4回)

指定できる値は5つだがとりあえずこれでOK。縦1列に4つのグラフがならんだ windowが表示される。

!p.multi=0

通常表示に戻すとき。

特殊文字の表示

ギリシア文字などは標準実装されていないので、 TeXtoIDLという個人の作ったプロシージャ群を利用している人が多い。 たぶん検索をかけて一番上に来るかと思われる。 これをシステムのpathの通っているところにおく。

c=textoidl(' \beta')

plot,bx[*,30,30],title=c

このようにすればタイトルがギリシア文字のベータに。基本的にtexの書き方である。 \の前にスペースを1ついれておく。

未整理

stepper,reform(pr)