京都工芸繊維大学工芸科学部 生命物質科学域高分子機能工学部門 高分子物性工学研究室

  • JP
  • EN
  • menu

    ドル記号を使ったwave 制御 (重要)

    ドル記号を使ったwave 制御 (重要)

    string/G NameOfMyWave

    という文字列があって、

    NameOfMyWave=”abc”

    であるとする。ここで、abcという名のwaveを新たに作成したい場合どうしたらいいだろうか?

    abcという文字を使用してプログラムを記述できるのなら、答えは簡単で、
    Make/O/D abc
    である。

    しかし、NameOfMyWaveの文字列の中身をプログラムに組み込みたい場合、
    Make/O/D NameOfMyWaveでは駄目だ。このままでは、abcではなく、NameOfMyWaveというwaveが作成されてしまう。

    ここで登場するのがドルマークだ。

    string/G NameOfMyWave=”abc”; Make/O/D $(NameOfMyWave)

    とすれば文字列の中身であるabcというwaveが作成される。
    プログラミングでは非常に重宝する。

    特にファイル番号や、特定の条件、接頭語・接尾語をつけてwaveを区別したい時に威力を発揮する。

    ■以下のようなプログラムで、ドルマークに慣れ親しんでみよう。

    Macro dollarOperation(NameOfWave, NumberOfWave)
    string NameOfWave=”DefaultName”
    variable NumberOfWave=128
    Make/O/D/N=(NumberOfWave) $(NameOfWave)
    $(NameOfWave)=exp(-((p-NumberOfWave/2)/(NumberOfWave/10))^2
    DoWindow/K TestGraph
    Display/K=0 $(NameOfWave)
    DoWindow/C/T TestGraph,”TestGraph”
    End

    (1)このマクロは、文字列 NameOfWave と変数 NumberOfWave の関数となっており、Igorではマクロを実行するとユーザーにこれらの内容と値を尋ねてくるようになっている。もちろん、文字列にはダブルクォーテーションが必要だ。

    (2)Makeは、wave作成でおなじみの命令だが、/N=(NumberOfWave) によって、変数NumberOfWaveの長さのwaveを作成できる。ここで ( ) をお忘れなく。また、ここで登場した$(NameOfWave)が、waveの名前を指定している。ユーザーがマクロ起動時に、wave名を入力しているので、それを文字列 NameOfWave に格納した。NameOfWave中に格納されている文字をwave名として、wave をmakeするのだ。

    (3)せっかくwaveを作成したので、ガウス関数でテストデータを作成してみた。

    (4)DoWindowは、ウインドウ操作に関する命令で、様々なオプションを持っている。/Kは、既存のウインドウがあれば消すという意味だ。後に、描いたグラフのタイトルは”TestGraph”にするため、TestGraph があれば重複して描かれないようにその都度消す事にした。

    (5)Displayは、WindowsのNew Graphと同じグラフを描く命令だ。通常 Display ywave vs xwave のように使う。ここでは、y軸の値のみプロットして、x軸は0, 1, 2, …と単純にデータ番号に対してプロットした。ちなみに/K=1というオプションを付けると、ウインドウの左上のボタンを1度クリックすると確認無しにグラフが消えるようになる。

    (6)デフォルトでは、ウインドウの名前はGraph0となる。このままではよいが、通常プログラミングした場合に、ウインドウの名前が決まっていないと不便が多いし、すでにGraph0が存在する場合にGraph1と変更され、目的のウインドウを見失う可能性もあるため、DoWindow/C/T によって固有の名前に変えておいた方がよい事もある。ここでは「グラフ名(ID), /C」と「グラフのタイトルバーに表示されるグラフ名(任意の名前), /T」の両方をTestGraphに変えた。

    グラフのデータ上をクリックすると、自分の入力した名前のwaveが作成されているのが理解できよう。