IDLの小技

提供: MacWiki
2007年4月1日 (日) 09:00時点におけるWikiSysop (トーク | 投稿記録)による版

(差分) ←前の版 | 最新版 (差分) | 次の版→ (差分)
移動: 案内検索

Memo

  • 主なカラーテーブル
6 PRISM
13 RAINBOW
25 Mac style
33 Blue Red
  • 環境変数(.cshrc)
setenv  IDL_STARTUP  ~/lib/idl/start.pro
  • ファイアーウォール

TCP/1700番ポートを開けておくこと


X Window 関連

  • X window でカラーウィンドウを扱うには↓が必要。
device, decomposed=0, retain=2, true_color=24
  • 65000色(High Color)では使えない。256色か1677万色(Full Color)が必要。

データの読み込み

Fortranバイナリ形式のデータを読み込む場合は、/f77 オプションをつける。 また、/get_lun で unit にファイル番号を自動取得することができる。

openr,/get_lun,/f77,unit,file

データの読み込み

data/ ディレクトリ内の data/data* ファイルを一覧表示し、 目的のファイルを番号で指定するサンプル。 単一のファイルを読み込む data_read を別途用意しておく。

spawn, 'ls data/data*', files
n = n_elements(files)
for i=0,n-1 do begin
    print, i, ' ', files(i)
endfor
print, 'Which file to read? (1/2/...)'
read, n
file = files(n)
data_read, file

ファイルの拡張子に .gz が含まれている場合は、 ファイルの開き方を切り替える

if( strmid(file,(strlen(file)-3),3) eq '.gz' ) then begin
    openr,1, file, /compress
    for i=0,nx-1 do begin
        readf,1, ...
    endfor
 endif else begin
    openr,1, file
    for i=0,nx-1 do begin
        readf,1, ...
    endfor
endelse
close,1

pngファイルに出力

Xの画面をpngファイルに出力したうえで、Preview.appで表示します。

pro png
pngfile = 'idl.png'
print, 'Filename? '
read, pngfile
write_png, pngfile, tvrd(true=1)
spawn, 'open -a Preview ' + pngfile ;; Mac OS X
end

同じ階層のディレクトリをFinderを開くには

spawn, 'open .'


3次元配列を tiff データに書き出す

for loop=0,255 do begin $
  spawn, 'printf "tiff/img%03d.tiff" ' + string(loop), count &$
  print, count(0) &$
  write_tiff, count(0), ds[0:255,0:255,loop] &$
  endfor
  • sprintf 相当の関数がわからないので、spawn でシェルコマンドを呼びだしている。

3次元配列の可視化

iVolume,ds[0:255,0:255,0:255]
iVolume,ue[0:255,0:255,0:255,2]

のように、3次元配列を引数に与える。

ノートマシンでのライセンスマネージャーの起動

ライセンスマネージャーはネットワークアドレスではなく、NIC にバインドされているようです。 場所によってホスト名が変わるノートPCの場合は、 次のように動的にライセンスファイルを書き換えると良いでしょう。 somewhere/else/license.dat は、ライセンスファイルのホスト名部分を

          1. のように書き換えたものです。
#!/bin/tcsh -f
/usr/bin/open /Applications/X11.app
/usr/local/rsi/idl/bin/lmstat
echo 'starting lmgrd....'
set host = `uname -n`
sed -e 's/#####/$host/' /somewhere/else/license.dat >! /usr/local/rsi/license/license.dat
/usr/local/rsi/idl/bin/lmgrd
endif
#end

ライセンスマネージャーの終了

root 権限で lmdown を実行します。

#!/bin/tcsh -f
sudo /usr/local/rsi/idl/bin/lmdown
#end


Wiki内の関連ページ