http://chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/

EXCEL で リサージュ曲線のシミュレーションを行う。

Excel を開いて、Aカラムのセル１ に （A1に）ｔ と入力. （Aカラム（列）に時間（秒）を入れる）
ツールバーの中央揃えボタンを押すと、文字がセルの中央に配置される.
Aカラムのセル２，３，４に、（A2、A3、A4 に）０、 ０.００１、 ０.００２ を入力する.

エクセル ワークシート の縦の並びを、列 （ カラム Column ）という.
横の並びを、行 （ ロウRow）という.

０を入れたセル A2 にマウスポインタを置いて、左クリックしたまま 0.002 を入れたセルまでドラッグする.
３個のセルが選択された枠が出る.

枠の右下にマウスポインタを置くとカーソルの印が黒い十字に変わる.

黒い十字印にマウスポインタ置いて左クリックしたまま セル２２までドラッグして、左クリックを離す.

セル A２ から A２２ まで
0 から 0.02 までの数字が自動的に入力される.
（これは、時間（秒）を示す数字）
桁が不揃いなので、ツールバーの桁揃えボタンを押して、桁を揃える。
その際、セル２から２２まで選択枠が表示されている状態であること（空色で表示）が必要です.

Ｅｘｃｅｌ 2007 では、空色で表示した選択枠内にカーソルを置いて右クリッ
クすると桁揃えアイコンが出る。

カラムB、C の セル１に、X、Yを入力.

カラムBのセル１にマウスポインタを置いて左クリックしたまま、カラムCのセル１までドラッグして、左クリックを離す.
カラムB、Cのセル１が選択された枠が出る.

ツールバーの中央揃えボタンを押してX、Yの文字をセルの中央に揃える.

カラムBのセル２を 左クリックしてカラムBのセル２に 選択枠を表示させる.

ツールバーの ｆｘ 枠 ( 関数入力枠 ) の空欄内を左クリックする.
縦線のカーソルが関数入力枠で点滅する.

関数入力枠に ＝ (半角等号) を入力する.

等号の記述は、セルの中に関数、数式を入力する準備ができたことを示す.

関数入力枠の = の右側に関数を書く.
sin(2*3.14*50* と 入力する.
（* は、エクセル、VBA で掛算を表す）

次にカラムAのセル２を左クリックする.
関数入力枠に A2 が自動入力される.

再び、関数入力枠の A2 の右側を左クリックして、閉じカッコ ） を入力.

最後に、キーボード上の Enter キーを押して、関数入力の終了.

キーボード上の Enter キーを押すと、関数入力枠の記述が消えるが、（これは セル B3 の内容を示しているため）

数字 ０ が表示されているセル B2 を左クリックすると、（セル B2 を選択すると）関数表示枠にセルB2に記述した式が現れる.

セル B2 が選択された状態で、（セル B2 に枠が表示された状態で）枠の右下にマウスポインタを置くとポインタの印が、黒い十字に変化する.

セルB2枠の右下の黒い十字印を左クリックしたまま、セル B２２ までドラッグして、左クリックを離すと、セル B2 から B22 まで数字が自動的に記述される.

桁が不揃いなので、ツールバーの桁揃えボタンで桁を揃える.

セル B3 を左クリックすると関数表示枠は以下の式が入っている.

＝ SIN ( 2 * 3.14 * 50 * A3 )セル B4 を左クリックすると関数表示枠は以下の式が入っている.
＝ SIN ( 2 * 3.14 * 50 * A4 )カラムBの セル B３ ～ B22 の式の中の カラムA の値が、対応する行の値 A3 ～ A22 に自動的に書き換えられていることを確認して下さい.

カラムBの数字をグラフに表示して確かめる.
カラムAの、Aと表示したセルを左クリックする.

カラムA全体に、選択枠が表示される.

次に、キーボード上のコントロールキー（Ctrl）（キーボードの左下または右下にある）を押したまま、カラムBの、Bと表示したセルを左クリックする.
カラムB全体にも、選択枠が表示される.
これで、カラムAと カラムB が選択された状態になる （空色で表示される）.

ツールバーのグラフウィザードボタンを押す.
グラフィウィザードのダイアログが現れる.
散布図、曲線表示を左クリックして選択し、次へ ボタンを左クリックする.

Ｅｘｃｅｌ 2007 では、挿入タグを開くと散布図のアイコンがでる。

グラフィウィザードのダイアログの完了ボタンを左クリックする.
エクセルシート上に、横軸が ｔ （カラムA）、 縦軸が X （カラムB） のグラフが表示される.
X = sin ( 2 πｆ t ) 、f = 50 (Hz)、 t が 0 から 0.02 秒までの グラフ.

１周期が １/ f =１/50 = 0.02 秒 になっていることを理解して下さい.

周波数 f （Hz） （Hz = 1/sec） 、 角速度 ω （rad/sec）、
周期 T （sec）の関係は 一見ややこしいが、各々の単位をよく見て、整頓して理解すれば簡単です。
交流波形１個を、円運動の１回転の射影にして考える。
１秒間に f 個の波があれば、１秒間に f 回転の円運動。
１回転の角度は 360度 （2πrad（ラジアン））なので１秒間の回転角度ω （rad/sec） = 2π（rad） ｘ ｆ （1/sec）
周波数 f （1/sec）の意味は、１秒間に存在する波の数。
周期 T （sec）の意味は、波が 1個通る秒数。
１秒間に存在する波の数 f x 波が 1個通る秒数 T = １とりあえず、グラフを消去する.
（グラフ枠内の空白を左クリック してキーボードのDeleteキー を押す）

カラムC にも 周波数 50Hz の正弦波を入力する.
セルC2 を左クリックして選択し、関数入力枠に =sin(2*3.14*50* を入力.
セルA2 を 左クリックして 関数にA2 を自動入力.
関数入力枠に、閉じカッコ ) を入力してキーボードの Enter キーを押す.

セルC2 を左クリックして選択枠を出し、選択枠の右下にマウスポインタを置いてポインタ記号を黒い十字印にした状態で左クリックを押しながら、セルC22 までドラッグして、左クリックボタンを離す.
セル C２ から C22 に正弦波の数字が自動入力される.
セル C２ から C22 まで選択した状態でツールバーの桁揃えボタンを押してカラムC の数字の桁を揃える.

カラムB の関数 X を編集する.
（ 正弦波の位相を 90°進める. ）セルB2 を左クリックして選択.
関数入力枠の A2 と ） の間を左クリックして縦線カーソルを出す.
A2 の右に、+90*3.14/180 と入力.
閉じカッコ ) の右側をクリックしてEnterキーを押して編集完了.
sin関数の変数は、ラジアン単位の角度を入れる必要があるので90 に π/180 を掛ける.

（１度 （1°） = π/ 180 ラジアン）

セルB2 を 左クリックして選択枠を出し、枠の右下にマウスポインタを置いてポインタの印を黒い十字に変化させる.

黒い十字印を左クリックしたままセル B２２ までドラッグして、左クリックを離す.

カラムB の数字が、自動的に正弦波の位相を 90°進めた数字（余弦波 cos ） に書き換えられる.

カラムB、C の数字をグラフで確かめる.
カラムAの、Aと表示したセルを左クリックする.
カラムA全体に、選択枠が表示される.
次に、キーボード上のコントロールキー（Ctrl）（キーボードの左下または右下にある）を押したまま、カラムBの、Bと表示したセルと、カラムCの、Cと表示したセルを左クリックする.
カラムBとC全体にも、選択枠が表示される.
これで、カラムAと カラムB と カラム C が選択された状態 （空色で表示） になる.

カラムAと カラムB と カラム C が選択された状態で、ツールバー の グラフウィザードボタン を左クリックする.

グラフ ウィザード の ダイアログが表れる.

散布図、曲線表示の項目を左クリックして選択して次へ ボタンを 左クリックする.

グラフィック ウィザード の 完了ボタンを 左クリックすると、エクセル ワークシート 内に、横軸が カラム A （ 時間 t : 0 ～ 0.02 秒 ）、縦軸が カラム B （ X : 周波数 50 Hz の 余弦波 ） と、カラム C （ Y : 周波数 50 Hz の 正弦波 ） が 描画される.

横軸に X、縦軸に Y のグラフ を描く.
（ リサージュ曲線 Lissajous' Curve）

カラムB の Bと記述されたセルを左クリックして、カラムB 全体を選択.

（空色に表示される.）
次に、Cｔｒｌ キー を 押しながら、カラム C の Cと記述されたセルを左クリックして、カラムC 全体も選択.
グラフィック ウィザード ボタンを左クリックする.

グラフ ウィザード の ダイアログが表れる.
散布図、曲線表示の項目を左クリックして選択して次へ ボタンを 左クリックする.

グラフィック ウィザード の 完了ボタン
を 左クリックすると、エクセル ワークシート 内に、横軸が カラム B（ X : 周波数 50 Hz の 余弦波 ） 、縦軸が カラム C（ Y : 周波数 50 Hz の 正弦波 ） のリサージュ曲線が描画される.

横軸 X が 余弦波 X = cos ( 2πｆ ｔ ) = sin ( 2 π f t + 90°)
縦軸 Y が 正弦波 Y = sin ( 2πf t )の リサージュ曲線 は、円 になる.
{ cos ( 2 π f t ) } 2 + { sin ( 2 π f t ) } 2 = 1 なので、
X2 + Y2 = 1 = 12
点 （ X、Y ） は、原点 ( 0、0 ) から 常に距離 1 の 位置 に存在するので、半径 1 の 円 を描く.
横軸 と 縦軸 の 正弦波 の 振幅 と 周波数 が 等しい場合は、位相が 90°ずれると、リサージュ曲線は、円になる.
つまり、横軸と縦軸に波形データを入れて、オシロスコープで円が描出されたら、波形の位相が９０度ずれていると判断できる。

作成した ワークシート を保存する.
EXCEL ウィンドウ の 左上にあるファイル メニュー を左クリックする.
メニューの 名前を付けて保存 を選択.
ファイルの種類は、 Microsoft Excel
ブック (*. xls ) を選択して、適当な名前を付けて保存して下さい.
編集後は適宜、上書き保存して下さい.

カラムB の関数 X を編集する.
（ 正弦波の位相を ４５°進める. ）セルB2 を左クリックして選択.
関数入力枠を 左クリックして縦線カーソルを出し、編集する.
A2 の右を、+45*3.14/180 と変更.
閉じカッコ ) の右側をクリックしてEnterキーを押して編集完了.
セルB2 から B22 まで 黒十字をドラッグ.
円を示していた リサージュ曲線が変化することを確認して下さい.

カラムB の 正弦波 X の 位相角 （φ）を 45°刻みで 変化させてリサージュ曲線が 変化する様子を観察して下さい.

リサージュ曲線の形状で ２つの交流信号の 位相ずれ が 測定できることを理解して下さい.

φ＝ 0°

φ＝ ４５°

φ＝９０°

位相角 （φ） が 180°を越えると、リサージュ曲線が もとの形状に戻っていく様子を観察してください.

φ＝ １３５°

φ＝ １８０°φ＝ ２２５°

カラムB の関数 X を編集する.
（ 正弦波の位相差を ０°にして周波数を 100 Hz にする. ）セルB2 を左クリックして選択.
関数入力枠を 左クリックして縦線カーソルを出し、編集する.
SIN ( 2*3.14*100*A2 ) と変更.
セルB2 から B22 まで 黒十字をドラッグ.
リサージュ曲線が変化することを確認して下さい.

カラムB の 正弦波 X の 周波数 f を 50 Hz 刻みで 変化させてリサージュ曲線が 変化する様子を観察して下さい.

リサージュ曲線の形状で ２つの交流信号の 周波数比 が 測定できる.
f = 100 Hz

f = 150 Hz

f = 200 Hz

縦軸の交流 Y の 周波数 50 Hz に対する横軸の交流 X の 周波数 の 倍率は ２、３、４ 倍.

縦方向に 点 （X、Y） が 1 往復する間に、横方向に 往復する回数が ２、３、４ 倍に 増加していることを理解して下さい.

横軸の交流 X の周波数がf = 150 Hz の リサージュ曲線は位相差が 0°の場合では、X 方向に ３往復していることがわかりにくいので、X に、位相差を 90°加えると理解しやすい.

カラムB の関数 X を編集する.
（正弦波の周波数を 50Hz、位相差を 90°にして、振幅を ２ にする. ）セルB2 の式を = ２*SIN ( 2*3.14*50*A2 + 90*3.14/180 ） と変更.
セルB2 から B22 まで 黒十字を ドラッグ.
リサージュ曲線が変化することを確認して下さい.

EXCEL の グラフ ウィザードは、自動的にデータ表示範囲をデータ幅で揃えてしまうので、一見、交流 X の振幅を変えてもリサージュ曲線が変化しないような印象を与えるが、X、Y軸の目盛りの値に注目し、楕円 に変化していることを理解して下さい.

X の 振幅 A = 0.5

A=2VBA （ Visual BASIC for Application）
を使って、リサージュ曲線を回転させる。
Lissajous.xls をホームページからダウンロードしてください。
VBA

Microsoft Office （Excel や Word などのソフトウェア）に組み込まれたBASIC 言語によるプログラム、マクロ作成ツール。
使えるようになると 非常に便利。

マクロ 【macro】
ワープロソフトや表計算ソフトなどで、特定の操作手順をプログラムとして記述して自動化する機能。
プログラムの記述に使う言語をマクロ言語という。
よく使う処理をマクロとして保存しておけば、必要なときに簡単に実行できるようになる。
マクロ機能を持ったアプリケーションソフトは、マクロの開発環境や動作環境が用意されている。
できたプログラムは文書ファイルに他のデータと一緒に保存される。

Excel 2016 では、表示タブ を押すと、右端にマクロのVBAアイコンが出る。

Excel 2016 の場合。 Lissajours.xls などのマクロ を動かしたい場合は、マクロに対するセキュリティを下げる作業が必要。

左端の ファイル タブ を押し、Excel情報画面を出す。

Excelのマクロは、Excelのセキュリティー設定を変更し、 Excelを一度終了し再起動すると作動する。
Excel情報画面の左端に並ぶメニューの一番下の、オプションを クリック。

Excelのオプション画面の左端に並ぶメニューの一番下の、セキュリティセンターを クリック。

Excelのオプション画面の左端メニューの一番下のセキュリティセンターをクリックして、セキュリティセンターの設定をクリック。

セキュリティセンター画面のマクロの設定をクリックし、すべてのマクロを有効にする の項目にチェックを入れる。

最後に、右下の OK ボタンをクリックする。
そして、一度 Excel を終了させる。
再度Excelを起動するとマクロが作動する。

Lissajous.xls をダブルクリックすると、Excel が起動する。
表示タブをクリック。

マクロメニューをクリック。

マクロの実行ボタンをクリックすると、リサージュ曲線が回転するマクロが動く。

マクロ ウィンドウの 編集をクリックすると、マクロ コードが記述されたウィンドウが現れる。

このプログラムは、Visual BASICという言語で記述されたもの。
Excel は、VBA（Visual BASIC forApplication） によるプログラム（マクロ）の作成ができることを知っておくと、今後、Excel で複雑な計算作業を多量に行う仕事がある場合も、マクロを組んで効率的に計算や統計処理などを行うことができることを知っておきましょう。

コード記入時には、大文字、小文字の区別は不要。
VBAが自動的に大文字が必要な箇所は変換してくれる。
重要な部位のコードは、自動的に青色に変化する。
Sub 関数名() ～ End Sub
Sub は、サブルーチン（プログラムの一部、関数）を記述する範囲を設定するコード。 関数名は自由に付けられる。
Sub 関数名() と End Sub の間に、実行したいプログラムを書く。
Worksheets ("sheet 1") . Cells ( 1, 6 )エクセル ワークシート の sheet 1 の セル(1,6) の値を指す関数。

Cells は（たて、よこ）の順に座標を記述するので、混乱しないように。

Cells ( i , j ) = 上から i 番目で、左から j 番目 のセルの値

xa = Worksheets ("sheet1") . Cells (1, 6)
xf = Worksheets ("sheet1") . Cells (2, 6)
ya = Worksheets ("sheet1") . Cells (4, 6)
yf = Worksheets ("sheet1") . Cells (5, 6)
xa に、セル（1，６）つまり セル F1 に書いた値を入れる。
xf に、セル（2，６）つまり セル F2 に書いた値を入れる。
ya に、セル（4，６）つまり セル F4 に書いた値を入れる。
yf に、セル（5，６）つまり セル F5 に書いた値を入れる。

xa に 交流 X の 振幅が代入される。
xf に 交流 X の 周波数が代入される。
ya に 交流 Y の 振幅が代入される。
yf に 交流 Y の 周波数が代入される。

セルE1 に X amplitude と入力、 F1 に 1 と入力。

（Xの振幅）

セルE2 に X frequency と入力、 F2 に 50 と入力。 （Xの周波数）
セルE4 に Y amplitude と入力、 F4 に 1 と入力。

（Yの振幅）

セルE5 に Y frequency と入力、 F5 に 100 と入力。（Yの周波数）

セルF5 の Y frequency の値 （Yの周波数）に、違う数値（２５、５０、１５０など）を入力して、リサージュ曲線がどのように変化するか観察して下さい。

For xp = 0 To 360
Next xp

For ～ Next 文
変数 xp （ここでは、交流 X の 位相 phase） を０°から ３６０°まで １°刻みで増加させながらFor と Next の間に記述されたプログラムを繰り返し実行する文。

For xp = 0 To 360
DoEvents

DoEvents
Next xp

For ～ Next 文 の間に、DoEventsというコマンド（命令文）が記述されている。
これは、Excel の図表を再描画させる関数で、記述しないと、グラフの逐次変化が描画されず、リサージュ曲線の回転が観察できない。

For i = 2 To 22
Next i
変数 i （ここではワークシートの たての番号）を、２ から 22 まで 1 づつ 増加させながらFor と Next の間のプログラムを繰り返し実行する。

t = Worksheets ("sheet1") . Cells (i, 1)
変数 t （ここでは 時間（秒））の値が上から i 番目、左から 1 番目つまり カラムA のセルの値になる。

x = xa * Sin ( 2 * 3.14 * xf * t + xp * 3.14 / 180 )y = ya * Sin (2 * 3.14 * yf * t )Worksheets ("sheet1") . Cells ( i , 2 ) = x
Worksheets ("sheet1") . Cells ( i , 3 ) = y
変数 x （交流X）の値を、xa, xf, xp から求め、
変数 ｙ （交流Y）の値を、ya, yf から求める。
求めた x, y の値を、それぞれカラムB （左から２番目）と カラムC （左から３番目）の、上から i 番目の セルに入力される。

For i = 2 To 22t = Worksheets("sheet1").Cells(i, 1)x = xa * Sin(2 * 3.14 * xf * t + xp * 3.14 / 180)y = ya * Sin(2 * 3.14 * yf * t)
Worksheets("sheet1").Cells(i, 2) = x
Worksheets("sheet1").Cells(i, 3) = y
Next i

上記のコードが、xp が 1 づつ増加するごとに実行され、カラムBとカラムCの上から2番目から22番目の数字が変化するたびに、グラフに表示されるリサージュ曲線が変化する。

今回作成したマクロは、必要最低限の機能しか記述していないので、VBAに興味のある人は、工夫してマクロコードの改良を試みてください。
例： 自動的にXとYの周波数比が変化していくマクロ、曲線の色が変化するマクロ、リサージュの立体的表示を行うマクロ、など。

VBAを解説した書籍やホームページは多数ある。
臨床検査技師は数字データを多く扱う職業なので、VBAが使えると仕事や研究が楽になる場合が多い。

VBAで、かなり高度なプログラムが作れます。