ソフトウェア/Igor のバックアップ差分(No.2)
更新- 追加された行はこの色です。
- 削除された行はこの色です。
[[公開メモ]] * Igor [#k3f1dcd4] #contents * Igor とは [#k3f1dcd4] データ解析に Wave Metrics 社の Igor Pro を使っています。 なかなか癖のあるソフトですが、 Igor 上でプログラムを組むことでかなり複雑なデータ解析も自動化できていろいろ捗ります。 ここには使い回しの効きそうなコード例を上げていこうと思います。 * ファイル名操作用のユーティリティ関数 [#x15fe647] 公式のオンラインヘルプはこちら: http://www.hulinks.co.jp/support/igor/programming/index.html ":" 区切りで渡されたファイルパスを操作する関数。 * 分野別記事へのリンク [#cb75dc8d] 同名の Delphi の関数を模したものです。 #ls2("ソフトウェア/Igor") * あるグラフ上に表示されたウェーブの一覧を表示する [#n02b667a] LANG:Igor // ファイル名を返す function/T ExtractFileName(filename) string filename return StringFromlist(ItemsInList(filename, ":")-1, filename, ":") end string graph_name = "Graph1" string traces = TraceNameList(graph_name, ";", 1) variable i for(i = ItemsInList(traces) - 2; i>=0; i-=1) print StringFromList(i, traces) endfor 画像の一覧なら、TraceNameList ではなく ImageNameList を呼べばいい。 LANG:Igor string graph_name = "Graph1" string images = ImageNameList(graph_name, ";", 1) variable i for(i = ItemsInList(images) - 2; i>=0; i-=1) print StringFromList(i, images) endfor * グラフウィンドウ上の選択領域を得る [#d6fd38cf] グラフ上をマウスで斜めにドラッグすると矩形領域を選べますが、 この範囲を Igor では Marquee と呼んでいます。 使用例 LANG:Igor // 与えられた座標がグラフの選択領域に含まれているかどうか返す function IsPointInSelectedRegion(x, y) variable x, y // ファイルパスを返す (末尾には : が付く) function/T ExtractFilePath(filename) string filename return filename[0,strlen(filename)-strlen(ExtractFileName(filename))-1] end string graph_name = "Graph1" // filename の . 以降を取り除いたものに ext を付ける function/T ChangeFileExt(filename, ext) string filename, ext variable i = strsearch(filename, ".", inf, 3) if(i<0) return filename + ext else return filename[0,i-1] + ext endif struct Rectangle selected_region GetMarqueeRegion(graph_name, selected_region) return IsPointInRect(x, y, selected_region) end 使用例 コード LANG:Igor print ExtractFileName("c:folder1:folder2:file.ext") // prints "file.ext" // 矩形領域を格納するための構造体 Structure Rectangle double left double right double top double bottom EndStructure print ExtractFilePath("c:folder1:folder2:file.ext") // prints "c:folder1:folder2:" // 指定された名前のグラフから選択範囲を得る // 選択されていなければ全範囲 (left, bottom 軸で) を返す function GetMarqueeRegion(graph_name, region) string graph_name Struct Rectangle ®ion print ExtractFilePath("c:folder1:folder2:file.ext") + "newfile.ext" // prints "c:folder1:folder2:newfile.ext" GetMarquee/W=$graph_name left, bottom if(!V_Flag) GetAxis/q/W=$graph_name bottom V_Left = V_min V_Right = V_max GetAxis/q/W=$graph_name left V_Top = V_min V_Bottom = V_max endif print ChangeFileExt("c:folder1:folder2:file.ext", ".txt") // prints "c:folder1:folder2:file.txt" region.left = V_Left region.right = V_Right region.top = V_Top region.bottom = V_Bottom end print ChangeFileExt("c:folder1:folder2:file.ext", "") // prints "c:folder1:folder2:file" // x, y で指定された点が rect 領域に入っているかどうかを返す function IsPointInRect(x, y, rect) variable x, y Struct Rectangle &rect variable result result = rect.left <= x result = x <= rect.right && result result = rect.top <= y && result result = y <= rect.bottom && result return result end
Counter: 14279 (from 2010/06/03),
today: 2,
yesterday: 0