![]() |
| サイトマップ | |
|
Igor Pro 7 では、プログラミング環境にも便利な変更と機能追加があります。
最初に目を引くのは、行番号の表示でしょう。バージョン7 では、プロシージャウィンドウにもコマンドウィンドウにも行番号が表示されます。ベーシックな機能ですが、長いプロシージャや履歴を行ったり来たりするときには、助かる機能です。
![]() |
もし、行番号が表示されないときは、その他メニュー>その他の設定 を選択し、「その他の設定」ダイアログを開きます。左側のリストで「テキスト編集」を選択し、「エディタ操作」のタブの「行番号を表示」をオンにしてください。
![]() |
プロシージャウィンドウ上部に新たに配置されたナビゲーションバーでは、プロシージャ中で宣言されたオブジェクト (関数、マクロ、メニュー、定数や構造体など) のリストが表示されるようになりました。確認したいタイミングで宣言されている場所までジャンプすることが可能です。
![]() |
また、プロシージャウィンドウ、ヘルプウィンドウ、ノートブックウィンドウで検索 (編集メニュー>検索) を実行すると、ナビゲーションバーの下に検索バーが表示されます。検索ボックスに文字列を入力するとリアルタムでヒットする部分がハイライトされます。
![]() |
シンタックスカラーは、コマンドウィンドウ (履歴エリアとコマンドラインの両方) にも適用されます。コマンドラインへの入力時にもリアルタイムでカラーが反映されますので、関数などの入力ミスを防ぐことができます。
![]() |
シンタックスカラーの詳細は、その他メニュー>その他の設定 を選択して、「その他の設定」ダイアログを開き、「テキスト編集」の「カラー」のタブで詳細に設定することもできます。
![]() |
プログラミング環境に対して、これまで要望が多かった
の 2点はこのバージョンで対応されました。これまで 400文字が上限だった1行当たりの入力文字列は、1000文字まで拡大されています。また、円記号/バックスラッシュ (¥) が行継続文字として利用できるようになりました。次のユーザ関数では、出力する文字列を2行に分けて文字列変数str に割り当てています。
Function/T LineContinuation() String str = "The Alphabet: " ¥ + "ABCDE FGHIJ KLMNO PQRST UVWXY Z" Print str End
コマンドラインで LineContinuation()
と入力して実行すると、2行に分かれた割り当てが実行されて、1行のテキストとして値が返されます。
Igor Pro のデバッガでは、構造体や多次元ウェーブの表示が可能になりました。
![]() |
![]() |
![]() |
多くの操作関数と関数が追加あるいは改良されています。そのリスト詳細は別記に譲りますが、ここでは新規に追加された操作関数・関数をいくつかピックアップしてご紹介します。
リストをテキストウェーブに変換する関数です。リストとは jack;fred;mike; のようにデータ要素 (jack, fred, mike) を区切り文字 (ここではセミコロン ; ) で結合した形式のデータで、ウェーブリスト、ウィンドウリストといった形で、Igor Pro 内部では登場します。Igor Pro にはたくさんのカラーテーブルが利用できますが、その一覧をテキストリストとして出力する CTabList() という関数を実行してみます。
Print CTabList() Grays;Rainbow;YellowHot;BlueHot;BlueRedGreen;RedWhiteBlue;PlanetEarth;Terrain;Grays256;Rainbow256;YellowHot256;BlueHot256;BlueRedGreen256;RedWhiteBlue256;PlanetEarth256;Terrain256;Grays16;Rainbow16; Red;Green;Blue;Cyan;Magenta;Yellow;Copper;Gold;CyanMagenta;RedWhiteGreen;BlueBlackRed;Geo;Geo32;LandAndSea;LandAndSea8;Relief;Relief19;PastelsMap;PastelsMap20;Bathymetry9;BlackBody;Spectrum; SpectrumBlack;Cycles;Fiddle;Pastels;RainbowCycle;Rainbow4Cycles;BlueGreenOrange;BrownViolet;ColdWarm;Mocha;VioletOrangeYellow;SeaLandAndFire;GreenMagenta16;EOSOrangeBlue11;EOSSpectral11;dBZ14;dBZ21; Web216;Mud;Classification;
カラーテーブルの名称がリストの形式で出力されます。これをウェーブとして扱うには、このリストを1つずつ区切り文字 (セミコロン ; ) ごとに取得するループを回す必要がありましたが、ListToTextWave 操作関数を使った関数を作成すると、簡単に取得することができます。
Function GetColorTableList() Wave/T tw = ListToTextWave(CTabList(), ";") Duplicate/O tw, ColorTableList Edit ColorTableList End
なお、Dulicate操作関数で tw というウェーブを ColorTableListウェーブに複製しているのは、ListToTextWave操作関数がフリーウェーブを返す仕様になっているためです。
ウェーブの中に重複する値があるときに、それを取り除く方法あるいは重複する値だけを取り出すには、やはり、愚直にループを回す必要がありました。バージョン7 で追加された FindDuplicates操作関数を使うと、重複する値だけ取り出したり (/DNフラグ) 、重複する値を取り除いたり (/RNフラグ) など、簡単に実現できます。
Make/O/N=7 OrgWave={1,1,2,3,4,5,5} FindDuplicates/DN=DuplicatedNumber OrgWave FindDuplicates/RN=DuplicateRemoved OrgWave Edit OrgWave, DuplicatedNumber, DuplicateRemoved
![]() |
上記の例は整数値だけを扱っていますが、小数の場合には、一致の許容度を指定すること (/TOLフラグ) も利用できます。
Make/O/N=6 OrgWave2={1.0, 1.1, 2.0, 2.2, 3.0, 4.0} FindDuplicates/RN=DuplicateRemoved2/TOL=0.2 OrgWave2 Edit OrgWave2, DuplicateRemoved2
![]() |
2つの値の差の絶対値と /TOL フラグで指定した許容度を比較して、差の絶対値が許容度以下であれば、その2つの値は重複していると判断されます。
上記の例では、1.0 と 1.1 の差の絶対値は 0.1 ですので 0.1 は重複とみなされ削除されていますが、2.0 と 2.2 の差の絶対値は 0.2 ですので、値は削除されていません。
数値ウェーブだけでなく、テキストウェーブの処理も可能ですし、重複する値を特定の値で置き換える処理も可能です。データの前処理に非常に便利な関数だと言えます。
2次元のヒストグラムを描くには、これまで Bivariate Histogram 2 パッケージを別途ロードしてデータを処理する必要がありましたが、バージョン7 では、2次元、3次元、4次元のヒストグラムデータを作成する JointHistogram操作関数が追加されました。JointHistogram操作関数の出力は M_JointHistogram というウェーブになりますので、イメージプロットするだけで、2次元のヒストグラムを簡単に描くことが可能です。
Make/O/N=(1000) xwave=gnoise(10), ywave=gnoise(5) JointHistogram/BINS={20,30} xwave,ywave NewImage M_JointHistogram ModifyImage M_JointHistogram ctab= {*,*,Rainbow,0}
![]() |
Igor Pro 7 では OS の環境変数の値も取得できるようになりました。ログインしているユーザ名や一時フォルダの名称を参照したい場合には便利です。
Print GetEnvironmentVariable("TEMP") C:\Users\support\AppData\Local\Temp Print GetEnvironmentVariable("USERNAME") Support Print GetEnvironmentVariable("WINDIR") C:\WINDOWS
環境変数を作成する SetEnvironmentVariable関数、削除する UnsetEnvironmentVariable関数も追加されています。
最後に紹介するのは FindContour操作関数です。2次元マトリクスウェーブから、指定したレベルの等値線を描く Xウェーブ (デフォルトではW_XContour) と Yウェーブ (デフォルトではW_YContour) を抽出します。
次のコマンドを実行して、サンプルデータを作成して、イメージプロットで描画します。
Make/O/N=(100,200) dataWave = 2e4*gauss(x,35,20,y,80,30)+1e4*gauss(x,60,15,y,140,25) NewImage dataWave ModifyGraph width=200,height=200 ModifyImage dataWave ctab= {*,*,Rainbow,1}
![]() |
Gauss分布を2つ重ね合わせたプロットが表示されます。このプロットでレベルが4 に等しい点を抽出するには、
FindContour dataWave,4
と実行します。W_YContour ウェーブと W_XContour ウェーブが保存されるので、これをプロットに追加します。
AppendToGraph/T W_YContour vs W_XContour
イメージプロットは通常の XYプロットとXとYが逆になりますので、AppendToGraph 操作関数も X と Y を入れ替える、/T フラグを指定しています。
![]() |