2次元waveの作り方と操作方法@igor pro - があらんどう

があらんどう

伽藍洞です。

2次元waveの作り方と操作方法@igor pro

2次元waveの作り方、扱い方について説明する。
2次元waveはあまり使わないためよく使い方を忘れてしまう。備忘録的。

1次元waveの使い方は過去記事参照
calciummm.hatenablog.com

1次元waveをつなげて2次元waveにする方法は過去記事参照
calciummm.hatenablog.com

2次元waveの作り方

メニューバーから作る
メニューバーから開く時は途中まで1次元waveのときと同じだ。メニューバーのDataからMake Wavesを選択する。

選択してでてくるダイアログにて以下の操作をする。
1.wave名を入力する。今回はwave0とした。
2.次元(Dimensions)を2に変更する。通常では1であるところを2に変更することで2次元waveにすることができる。つまりここが今回一番大事。
3.Columnsに数値を入力する。2を選ぶと③の箇所にcolumns(列の要素数)があらわれるので数値を入力する。今回は100にした。

Do itをクリックするとwave0ができる。今回はraws128、columns100なので128×100の行列ができている。Data Browser上にwave0ができている。Data Browser上のwave0をダブルクリックすることでtableでwave0を表示させる。(あるいはメニューバーのWindows>New tablesから表示させても良い。)

コマンドで作る

次はコマンドで作ってみる。1次元waveのときと同様に先ほどのダイアログを見ればコマンドがわかる。

Make/N=(128,100)/D/O wave0
  • /N=(128,100)で次元と要素数を決める
  • /Dは倍精度
  • /Oは同じ名前のwaveがあったとき上書き

のそれぞれオプション。

マクロでの典型的の作り方
Macro make2D()
Make/N=(128,100)/D/O wave0
Endmacro
外部からインポートする

2次元的な画像データなどがcsv形式などで存在するときはCntrl+Lを押す。(あるいはメニューバーのData>Load Waves>Load Delimited Textからでもよい)

出てくるダイアログにて
1.ファイル形式を選択 csvならばDelimited textを選択。 
2.チェックを入れる。入れないと2Dのデータとして取り扱われない。
3.Fileをクリックしてロードしたwaveを選択する。
以上をした上でロードすればよい。



2次元waveの操作の仕方

最も簡単な表示方法

作ってみたwaveの内容をテーブルでなくグラフで簡単に見てみたいときに使える方法。後述するプロット方法と重なる部分もあるが作ったら早速見てみたい場合。
作成したwaveをData browser上で選択する。するとData browserの下部にカラープロットされた図が表示される。

この図をダブルクリックするとグラフが別windowで表示される。

プロット方法

数値の入力方法

2Dwaveに数値を入力する方法について述べる。
まずwave0という名前の100×100の2Dwaveをつくる。(コマンドならばMake/D/N=(100, 100)/O wave0と入力)

waveの全体に同じ値を入力したい場合
wave0  = 5

などとコマンドウィンドウに入力すればよい。

2Dwaveの任意の要素に値を入れたい場合

例えば (32, 71)の要素に値10を入力することを仮定する。

wave0[32][71]  = 10

つまり最初の[ ]内が行を二つ目の[ ]内が列を示している。

行または列に値を入力
wave0[5][]  = 10

とすると5行目のすべて10が入力される。

あるいは

wave0[][22]  = 35

とすれば22列目にすべて35が入力される。

また

wave0[50, 67][21, 35]  = 15

と入力すれば(50, 21)から(67, 35)まで15が入力される。

関数を定義して入力

関数に従って値を入力したい場合の入力方法について示す。
コマンドやマクロ中では
xあるいはpは行の要素の変数
yあるいはqは列の要素の変数
として使うことができる

そのため

wave0 = x

とすれば

また

wave0 = y

とすれば

となる。

あるいは

wave0 = x^2 + y^2

とすれば

ちょっぴり複雑なプロットをマクロで

今までのことを参考に2次元waveを作って2次元のガウス関数をプロットしてカラープロットしてグラフ化するところまで一連のマクロとして実現してみる。

 f(x, y) = a \times \exp\left( -\frac{(x-b)^2}{c^2}\right) \times \exp \left( -\frac{(y-d)^2}{e^2} \right) + f

今回のガウス関数xyが独立した簡単なものにした。

以下のマクロを動作させてみる。

macro gauss_plot()
//変数の定義
variable num = 100
variable a = 1
variable b = num/2
variable c = 30
variable d = num/2
variable e = 20
variable f = 1

Make/D/N=(num,num)/O wave0 //num×numのwaveを作成

wave0 = a * exp(-(x-b)^2/c^2) * exp(-(y-d)^2/e^2) + f


結果をプロットすると

一次元のwaveをつなぎ合わせて2次元waveを作る

過去記事参照
calciummm.hatenablog.com