便利 | ||
>? | helpのためのwindowが表示される | |
>$ | IDLを終了してもとのLinuxに戻る | |
>retall | 起動したての状態に戻る | |
>journal | このコマンド以降に打ったコマンドを.proというファイルに残してくれる | >retallをすると>journalも終わってしまうので注意 |
& | 一行に複数のコマンドを打つ | |
$ | 一行の最後に書くと、次の行に継続される | |
print,string(7B) | ブザー音を鳴らす | 時間がかかるプログラムの最後とかにつけると便利 |
カラーパレット | ||
>loadct,[0~39] | 準備されているカラーパレットの中から選んでload | 0:白黒 39:Rainbow |
>xloadct | 準備されているカラーパレットの閲覧 | Doneを押したら、そのカラーパレットを使って表示するようになる |
>xpalette | 画像を表示するときの色を手動で設定 | |
>xpalette (設定してからDoneを押す) >tvlct,r,g,b,/get >savegenx,file='hoge.geny',r,g,b |
xpaletteで作成したカラーパレットを保存 | |
>restgenx,file='hoge.geny',r,g,b >tvlct,r,g,b |
保存したカラーパレットをloadして表示のために使う | r,g,bという変数に値を代入している。r,g,bという名前でなくても良い。 |
>plot,data,color=fsc_color('green') | 色を名前で指定 | http://www.dfanning.com/programs/fsc_color.pro |
>set_line_color | 代表的な色はカバーしている。color=2はyellow, color=3はred, color=はがblue。 | http://sohowww.nascom.nasa.gov/solarsoft/gen/idl/display/set_line_color.pro |
tifファイルの読み書き | ||
>a=read_tiff('hoge.tif') | aという変数に代入 | |
>write_tiff,'hoge.tif',a | aというデータをtifファイルに書き出し | !! デフォルトでは8bitで保存 !! |
>write_tiff,'hoge.tif',a,/long (,/float) | aというデータをlong形式で(float形式で)tifファイルに書き出し |
画像の保存・表示 | ||
>thisDevice=!D.NAME
>set_plot,'ps' >device,filename='test.ps' >device,/color >plot,test,title="test" etc >device,/close >set_plot,thisDevice |
画像をpsファイルとして保存する |
出力する場所を画面からpsに変更 出力するファイル名を設定 カラー画像にしたいときにつける コマンドの結果がtest.psに保存される test.psを閉じる 出力先を画面に戻す |
>xv | 画像を保存する | xvの画面で右クリック 操作用のウィンドウがでる Grab をクリック 小さい画面がでるのでその画面のGrabをクリック 保存したいウィンドウを最前面にしてクリック Save をクリックして保存。そのときフォーマットをgifやPostscript(PS)に指定 |
>gv test.ps | psファイルを表示 | |
>xv test.gif | gifファイルを表示 | |
>read_gif,'test.gif',img | gifファイルをIDLで読み込む | |
>set_plot,'ps' >device,filename='filename.eps',xsize=??,ysize=??,xoffset=1,yoffset=2,(/color),/encapsulated,bits=8 >tvsclなど >device,/close |
epsファイルを作る | xsizeとysizeはcm単位 |
>set_plot,'ps' >device,filename='filename.eps',xsize=??,ysize=??,xoffset=1,yoffset=2,(/color),/encapsulated,bits=8 >!p.font=0 >device,set_font="Times-Roman" >tvsclなど >device,/close |
Fontを指定してepsファイルを作る | 他にもCourier, Helvetica, Times Bold, Times Intalic, Times Bold Italicなどがある |
>write_png,'test.png',tvrd(/true) | 表示されているカラースケールのまま保存する | |
>set_plot,'z' >device,set_pixel_depth=24,decomposed=0 >write_bmp,'test.bmp',tvrd(true=1) |
表示されているカラースケールのまま保存する(Z buffer) | |
>print,size(array) | arrayの次元、pixel数、type(int型、string型など)、要素数を表示 | |
>stepper,data,xsize=(size(data))[1] | 3次元データのステッパーを拡大して表示する | |
xroi.pro 使い方はdavid fanning参照 | 画像の一部をX上で直線や曲線など、自由に選択する | http://www.dfanning.com/ip_tips/xroi.html |
>thisDevice=!D.NAME >set_plot,'ps' >device,xsize=30,ysize=16,filename='??.eps,/encapsulated,bits=8 >!p.font=0 >device,/tt_font,set_font='Times',font_size=12 >!p.thick=4 & !x.thick=4 & !y.thick=4 >plot,test,xr=[??,??],xs=1,yr=[??,??],ys=1,position=[0.1,0.1,0.96,0.96],ticklen=-0.025 >device,/close >set_plot,thisDevice (epsの連番をQuickTimeでムービーにするにはlinux上でjpgに変換) convert *.eps -quality 99 test.jpg (test-01.jpg,test-02.jpgが出来る) | 論文で使うきれいなepsを作るためのイロイロ | |
>truecolorimage=bytarr(nx,ny,3) >truecolorimage[*,*,0]=bytscl(data1,min=0,max=100) >truecolorimage[*,*,1]=bytscl(data2,min=0,max=450) >truecolorimage[*,*,2]=bytscl(data3,min=10,max=300) >plot_image,truecolorimage | how to produce composite image from multiple images? |
Program | ||
>.r test | プログラムtest.proを実行 | |
>.c | stopで一時停止したプログラムを続きから実行 | |
function (procedure) ////program//// end |
programの中で使うfunctionをsubroutineとして作成 | |
@subroutine_test pro mainroutine ... end |
programの中で使うsubroutineが別ファイルとして存在している場合 | |
>a=100 & b=5 >while (i=a-b gt 50) do begin & a=a-b & print,a,b,i & endwhile |
while()の条件を満たす限り繰り返す |
テキストファイルの読み込み | ||
>openr,1,'x.txt' >readf,1,format='(3i5)',x,y,z >close,1 |
ファイルを書式を指定して読み込む | 書式指定子はFortranと同じ |
>openw,1,'x.txt' >writeu,1,d >printf,1,d,format="(4f3.3)" >close,1 |
ファイルを書式を指定して書き込む | 書式指定子はFortranと同じ |
>u=fltarr(x,y) >openr,1,'x,dat' >readu,1,x,y >close,1 |
配列を宣言してファイルを読み込み | |
>a=rd_tfile('test.txt') >a=rd_tfile('test.txt',5) |
txtファイルを読み込む | 下の例は、5列のデータファイルを読み込むとき |
readcol,'Acton_transmission.txt',F='F,F',wavelength_nm,transmission_percent | リストファイルを読み込む | フォーマットの指定 F='A' 文字列, F='I' 整数, F='F' 小数 wavelength_nm,transmission_percentという変数名に値を保存 |
>a=file_info('test.pro') >help,a,/structure |
ファイルの情報を調べる | 名前、属性、サイズなど |
>a=is_dir(dirname) | dirnameというディレクトリがあればa=1,なければa=2 | |
ファイルリストの作成 | ||
a=file_search() | current directoryにあるファイルのリスト | |
a=file_search('/home/watanabe/','*.txt'count=nn) | /home/watanabeの中のtxtファイルのみのリスト | |
>a=file_search('~/[a-d]*',/test_directory) | /home/watanabe/にある、a-dで始まるディレクトリのみのリスト | |
>a=dialog_list(file_list) | file_listが別windowで表示され、その中で一つ選ぶ | |
>a=findfile('*.tif',coount=nn) | current directoryにあるtif拡張子を持つファイルリスト | |
Time | ||
>a=anytim2tai(index.date_obs) | ||
>a=anytim2cal(t,/time) | hh:mm:ssを表示 | tはanytim2taiで計算した秒数 |
>a=(anytim2utc(index.date_obs)).time/1000d0 | その日が始まってからの経過秒数 |
プロット | |||
>plot,xx,yy,xr=[?,?],yr=[?,?] | 横軸にxx,縦軸にyyを表示させてプロット | xxとyyの要素数は同じ | |
>plot,data,xtickname=[' ',' ',...] | x軸のメモリに値を表示させない | ||
>plot,!x.crange,[0,0] | x軸と平行に線を引く | ||
>plot,[10,10],!y.crange | y軸と平行に線を引く | ||
>a=findgen(17)*(!pi*2/16.) >usersym,2*cos(a),2*sin(a),/fill >plot,function,psym=8 |
ユーザー定義のsymbol markでplotする。 | この場合は中黒点 | |
>plot,function,/nodata,xstyle=4 | データ点をプロットしない。x軸を表示しない。 | ||
>arrow,x0,y0,x1,y1 | 始点(x0,y0)から終点(x1,y1)に矢印を書く | ||
>plot,data,psym=symcat(9,thick=3),symsize=3 | 色んなシンボルでプロット | psym=-symcat(9)とすると、シンボルを線でつないでくれる | |
>axis,yaxis=1,ystyle=1,yrange=[0,4] | 左右で違うy座標を表示する | http://idlastro.gsfc.nasa.gov/idl_html_help/AXIS.html | |
>color_bar,widthx,widthy,x0,y0,min=0,max=500 | カラーバーを表示。[x0,y0]はカラーバーの左下のdevice座標 | ||
>legend,['this line','that line'],psym=[4,6] | psymやlinestyleで書いたプロットのlegendを書く | http://www.astro.washington.edu/docs/idl/cgi-bin/getpro/library02.html?LEGEND/ | |
配列・書式 | ||
a=fix([1.2,5.9]) | int型に変換。小数点以下切捨て。 | aはint型[1,5]となる |
data=replicate(a,n1,n2) | 要素が全てaでn1*n2の配列 | |
re=real_part(a) & im=imaginary(a) | 複素変数aの実習部分、虚数部分を取り出す | |
b=reform(a) | a(m,1,n)の配列をb(m,n)に変換 | |
配列計算 | ||
b=transpose(a) | 転置行列を求める | |
b=fft(a,-1) | -1を-1にしたら逆フーリエ変換 | 横軸の説明は?参照 |
b=a < 100 | aの要素のうち100以上のものをすべて100にする | |
b=total(a,n) | 次元nにそって配列aを合計する | |
b=where(a gt 20,count) | 20より大きい要素の場所と数(count)を求める | |
result=interpol(vector,abscissa,new_abscissa) | 任意のx座標での補間値を計算 | homepage |
result=interpol(vector,abscissa,new_abscissa) | 2つの配列の相関係数を計算 | homepage |
result=fshift(image,delx,dely) | 少数値までで配列をシフト | homepage |
!定数 | ||
!radeg | radianをdegree単位に変換 | 180.0/!pi=!radeg=57.2958 |
result=interpol(vector,abscissa,new_abscissa) | 任意のx座標での補間値を計算 | homepage |
文字列の操作 | ||
>print,strlen('This is test.') | 文字列の長さを表示 | |
>print,strmid('This is test.',5,2) | 5文字目から2文字分を表示 | 表示結果は'is' |
>print,strpos('This is test.','is') | 'is'が文字列の中で何番目の文字から始まっているかを表示 | 表示結果は5 |
>print,string(format='(i4.4)',50) | 文字列'0050'を表示 | |
c=strcompress(c,/remove_all) | 文字列cの中の空白をなくす | |
str = 'Out, damned spot! Out I say!' print, (STRJOIN(STRSPLIT(str, /EXTRACT), ':')) |
文字列の空白を:で置き換える | |
c=textoidl("gamma_{0}") | ギリシャ文字や指数の文字列をつくる | http://physweb.mnstate.edu/mcraig/textoidl/からダウンロード |
embedded formatting commands | http://idlastro.gsfc.nasa.gov/idl_html_help/Embedded_Formatting_Commands.html | |
print,string(13b)+' % finished: ',float(i)*100/(nn-1),format='(a,f4.0,$)' | progress status in program | |
オングストローム Åを表示 | print,STRING("305B);" | |
ps bufferでオングストローム Åを表示 |
set_plot,'ps' !p.font=0 device,/isolatin1 angstrom=string(197B) !p.font=-1 set_plot,'x' set_plot,'ps' !p.font=0 device,xsize=???,... !p.font=0 plot,test,xtitle=angstrom |
SolarSoftware | ||
SOT FG/SP Data Analysi Guide | Hinode Science CenterでのSP Milne Inversionの方法など | |
>plot_nar,'4-mar-07 01:15:00'(,/text,chars=?,chart=?) | 太陽全面にNOAA番号と場所を表示する | |
>plot_goes,'3-may-07' | GOESのプロットを描く | |
>image2movie,filelist,/java | java script movieのhtmlファイルを作成 | |
>index2map,index,data,map >plot_map,map,cen=[??,??],fov=[???/60.,???/60.],dra=[???,???] |
mapを描く | |
成影さんプログラム | 太陽全面のポテンシャル磁場 | |
>plot_box,100,100,50,50,/dev | device座標で(100,100)を中心とした50X50pixelの長方形を描く | |
map2=shift_map(map,10,10) | mapをmap.units単位で移動させる | |
>goes | GUIでgoes plotを操作。File->Create Plot Fileでイメージの保存も出来る | |
>character=get_kbrd(1) | keyboard inputを待って、一文字をcharacterにおさめる | |
>transform=shift(fft(image),imageSize[0]/2,imageSize[1]/2) mask=hanning(imageSize[0],imageSize[1]) maskedTransform=transform*mask inverseTransform=fft(shift(maskedTransform,imageSize[0]/2,imageSize[1]/2),/inverse) HanningFilteredImage=real_part(inverseTransform) |
Hanning Filter (low frequency informationを維持して、noiseを落とす) | 参考URL http://www.ifi.uio.no/it/latex-links/STORE/opt/rsi/idl/help/online_help/Removing_Noise.html |
dt=30 time=FINDGEN(n_elements(data))*dt wave = WAVELET(data,dt,PERIOD=period,COI=coi,/PAD,SIGNIF=signif) nscale = N_ELEMENTS(period) LOADCT,39 CONTOUR,ABS(gwave)^2,time,period, $ XSTYLE=1,XTITLE='Time',YTITLE='Period',TITLE='Wavelet Granule', $ YRANGE=[MAX(period),MIN(period)], $ /YTYPE, $ ;*** make y-axis logarithmic NLEVELS=25,/FILL,chars=1.5 PLOTS,time,coi,NOCLIP=0 ;*** anything "below" this line is dubious |
wavelet変換とそのパワー分布表示 | |
smoothdata=smooth(data,[50,50]) | 二次元データのスムージング | |
enlargedata=congrid(data,500,500,/interp) | congridは任意の倍率に拡大する。さらにそれを/interpするとスムーズになる。 | |
cor=correl_images(image1,image2) | image1とimage2の相関係数を求める | |
ocontour,data,40,30,c_linestyle=3,c_color=3,levels=[10,20] | 表示した図の上に等値線を引く | |
drot_xy,-100,-26,'2008-08-04 06:06:30UT','2008-08-04 07:30:00UT',x,y | '2008-08-04 06:06:30UT'に[-100arcsec,-26arcsec]にあったものが、差動回転で'2008-08-04 07:30:00UT'に[x,y]に来る | |
caldat,julday(12,01,2008)-1,d,m,y | 2008-12-01の前日はy年d月m日 | |
jdcnv,2006, 8, 25, 8+49./60, jd ;calculate julian date baryvel, jd, 2000, vh, vb ;2000 is epoch (bunten) sunpos, jd, ra, dec, longmed, oblt, RADIAN = radian ;compute the RA and Dec of the Sun radial_velocity = vb[0]*cos(dec)*cos(ra) + vb[1]*cos(dec)*sin(ra) + vb[2]*sin(dec) |
2006-08-24 08:49UTの視線速度測定への地球の自転補正分を計算する baryvelは月と地球の相互作用も考慮に入れているので、精度は1m/s |
|
print,conv_a2h([940,0],'2010-Jun-03') | arcsecondの座標表示をheliocentric coordinateに変換 | |
>a=anymin2hel(xx,yy,date=date) | xx,yy[arcmin]からheliographic coordination (lat, long [degree])に変換 | |
>print,diff_rot(rot_days,latitude) | latitude[degree]でrot_dayだけ差動回転したときの回転角[degree] |
Download convenient procedures | ||
crispex | 3次元データキューブを読み込み、ムービーだけでなくスリット上のタイムスライス、スペクトルの時間変化など、様々なwidget機能が使えるプログラム | http://folk.uio.no/gregal/crispex/index.html |
window | ||
!p.charsize=2. | フォントサイズを設定 | |
window,xp=100,yp=200 | screenの[100,200]を左下にしたwindowを表示 | |