医用工学概論 Medical Engineering (ME) 3年前期...

91
http://chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/ EXCEL で リサージュ曲線のシミュレーションを行う。 Excel を開いて、Aカラムのセル1 に (A1に) t と入力. Aカラム(列)に時間(秒)を入れる) ツールバーの中央揃えボタンを押すと、 文字がセルの中央に配置される. Aカラムのセル2,3,4に、(A2A3A4 に) 0、 0.001、 0.002 を入力する. エクセル ワークシート の 縦の並びを、列 ( カラム Column )という. 横の並びを、行 ( ロウ Row )という.

Transcript of 医用工学概論 Medical Engineering (ME) 3年前期...

Page 1: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

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

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

Excel を開いて、Aカラムのセル1 に (A1に)

t と入力. (Aカラム(列)に時間(秒)を入れる)

ツールバーの中央揃えボタンを押すと、

文字がセルの中央に配置される.

Aカラムのセル2,3,4に、(A2、A3、A4 に)

0、 0.001、 0.002 を入力する.

エクセルワークシート の

縦の並びを、列 ( カラム Column )という.

横の並びを、行 ( ロウ Row )という.

Page 2: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

0を入れたセル A2 にマウスポインタ

を置いて、

左クリックしたまま 0.002 を入れた

セルまでドラッグする.

3個のセルが選択された枠が出る.

枠の右下にマウスポインタを置くと

カーソルの印が黒い十字に変わる.

黒い十字印にマウスポインタ置いて

左クリックしたまま セル22まで

ドラッグして、左クリックを離す.

Page 3: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

セル A2 から A22 まで

0 から 0.02 までの数字が

自動的に入力される.

(これは、時間(秒)を示す数字)

桁が不揃いなので、ツールバーの

桁揃えボタンを押して、桁を揃える。

その際、セル2から22まで

選択枠が表示されている状態で

あること(空色で表示)が必要です.

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

Page 4: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

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

カラムBのセル1にマウスポインタを置いて

左クリックしたまま、カラムCのセル1まで

ドラッグして、左クリックを離す.

カラムB、Cのセル1が選択された枠が出る.

ツールバーの中央揃えボタンを押して

X、Yの文字をセルの中央に揃える.

Page 5: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

カラムBのセル2を 左クリックして

カラムBのセル2に選択枠を表示させる.

ツールバーの fx 枠 ( 関数入力枠 ) の

空欄内を左クリックする.

縦線のカーソルが関数入力枠で点滅する.

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

等号の記述は、セルの中に関数、数式を

入力する準備ができたことを示す.

Page 6: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

関数入力枠の = の右側に関数を書く.

sin(2*3.14*50* と 入力する.

(* は、エクセル、VBA で掛算を表す)

次にカラムAのセル2を左クリックする.

関数入力枠に A2 が自動入力される.

再び、関数入力枠の A2 の右側を

左クリックして、閉じカッコ ) を入力.

最後に、キーボード上の Enter キー

を押して、関数入力の終了.

Page 7: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

キーボード上の Enter キーを押すと、

関数入力枠の記述が消えるが、

(これは セル B3 の内容を示しているため)

数字 0 が表示されているセル B2 を

左クリックすると、(セル B2 を選択すると)

関数表示枠にセルB2に記述した式が現れる.

セル B2 が選択された状態で、

(セル B2 に枠が表示された状態で)

枠の右下にマウスポインタを置くと

ポインタの印が、黒い十字に変化する.

Page 8: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

セルB2枠の右下の黒い十字印

を左クリックしたまま、

セル B22 までドラッグして、

左クリックを離すと、

セル B2 から B22 まで数字が

自動的に記述される.

桁が不揃いなので、

ツールバーの桁揃えボタンで

桁を揃える.

Page 9: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

セル B3 を左クリックすると

関数表示枠は以下の式が入っている.

= SIN ( 2 * 3.14 * 50 * A3 )

セル B4 を左クリックすると

関数表示枠は以下の式が入っている.

= SIN ( 2 * 3.14 * 50 * A4 )

カラムBのセル B3 ~ B22 の

式の中の カラムA の値が、

対応する行の値 A3 ~ A22 に

自動的に書き換えられていることを

確認して下さい.

Page 10: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

カラムBの数字をグラフに表示して確かめる.

カラムAの、Aと表示したセルを左クリックする.

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

次に、キーボード上のコントロールキー(Ctrl)

(キーボードの左下または右下にある)を

押したまま、

カラムBの、Bと表示したセルを左クリックする.

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

これで、カラムAと カラムB が選択された

状態になる (空色で表示される).

Page 11: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

ツールバーのグラフウィザードボタンを押す.

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

散布図、曲線表示を左クリックして選択し、

次へ ボタンを左クリックする.

Excel 2007 では、挿入タグを開くと

散布図のアイコンがでる。

Page 12: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

グラフィウィザードのダイアログの完了ボタンを左クリックする.

エクセルシート上に、横軸が t (カラムA)、 縦軸が X (カラムB) の

グラフが表示される.

X = sin ( 2 πf t ) 、f = 50 (Hz)、 t が 0 から 0.02 秒までの グラフ.

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

Page 13: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.
Page 14: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.
Page 15: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

周波数 f (Hz) (Hz = 1/sec) 、 角速度 ω (rad/sec)、

周期 T (sec)の関係は一見ややこしいが、

各々の単位をよく見て、整頓して理解すれば簡単です。

交流波形1個を、円運動の1回転の射影にして考える。

1秒間に f 個の波があれば、1秒間に f 回転の円運動。

1回転の角度は 360度 (2πrad(ラジアン))なので

1秒間の回転角度ω (rad/sec) = 2π(rad) x f (1/sec)

周波数 f (1/sec)の意味は、1秒間に存在する波の数。

周期 T (sec)の意味は、波が 1個通る秒数。

1秒間に存在する波の数 f x 波が 1個通る秒数 T = 1

Page 16: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

とりあえず、グラフを消去する.

(グラフ枠内の空白を左クリック して

キーボードのDeleteキー を押す)

カラムC にも周波数 50Hz の正弦波を

入力する.

セルC2 を左クリックして選択し、

関数入力枠に =sin(2*3.14*50* を入力.

セルA2 を 左クリックして 関数にA2 を

自動入力.

関数入力枠に、閉じカッコ ) を入力して

キーボードの Enter キーを押す.

Page 17: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

セルC2 を左クリックして選択枠を出し、

選択枠の右下にマウスポインタを置いて

ポインタ記号を黒い十字印にした状態で

左クリックを押しながら、セルC22 まで

ドラッグして、左クリックボタンを離す.

セル C2 から C22 に正弦波の数字が

自動入力される.

セル C2 から C22 まで選択した状態で

ツールバーの桁揃えボタンを押して

カラムC の数字の桁を揃える.

Page 18: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

カラムB の関数 X を編集する.

( 正弦波の位相を 90°進める. )

セルB2 を左クリックして選択.

関数入力枠の A2 と ) の間を

左クリックして縦線カーソルを出す.

A2 の右に、+90*3.14/180 と入力.

閉じカッコ ) の右側をクリックして

Enterキーを押して編集完了.

sin関数の変数は、ラジアン単位

の角度を入れる必要があるので

90 に π/180 を掛ける.

(1度 (1°) = π/ 180 ラジアン)

Page 19: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

セルB2 を 左クリックして選択枠を出し、

枠の右下にマウスポインタを置いて

ポインタの印を黒い十字に変化させる.

黒い十字印を左クリックしたまま

セル B22 までドラッグして、

左クリックを離す.

Page 20: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

カラムB の数字が、自動的に

正弦波の位相を 90°進めた数字

(余弦波 cos ) に書き換えられる.

Page 21: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

カラムB、C の数字をグラフで確かめる.

カラムAの、Aと表示したセルを左クリックする.

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

次に、キーボード上のコントロールキー(Ctrl)

(キーボードの左下または右下にある)を

押したまま、

カラムBの、Bと表示したセルと、

カラムCの、Cと表示したセルを左クリックする.

カラムBとC全体にも、選択枠が表示される.

これで、カラムAと カラムB と カラム C が

選択された状態 (空色で表示) になる.

Page 22: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

カラムAと カラムB と カラム C が

選択された状態で、

ツールバーのグラフウィザードボタン を

左クリックする.

グラフ ウィザード の ダイアログ

が表れる.

散布図、曲線表示の項目を

左クリックして選択して

次へボタンを 左クリックする.

Page 23: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

グラフィック ウィザード の完了ボタンを 左クリックすると、

エクセルワークシート 内に、

横軸が カラム A ( 時間 t : 0 ~ 0.02 秒 )、

縦軸が カラム B ( X : 周波数 50 Hz の余弦波 ) と、

カラム C ( Y : 周波数 50 Hz の正弦波 ) が 描画される.

Page 24: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

横軸に X、縦軸に Y のグラフ を描く.

( リサージュ曲線 Lissajous' Curve)

カラムB の Bと記述されたセルを

左クリックして、カラムB 全体を選択.

(空色に表示される.)

次に、Ctrl キー を 押しながら、

カラム C の Cと記述されたセルを

左クリックして、カラムC 全体も選択.

グラフィック ウィザード ボタンを

左クリックする.

Page 25: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

グラフ ウィザード の ダイアログ

が表れる.

散布図、曲線表示の項目を

左クリックして選択して

次へボタンを 左クリックする.

グラフィック ウィザード の完了ボタン

を 左クリックすると、

エクセルワークシート 内に、

横軸が カラム B

( X : 周波数 50 Hz の余弦波 ) 、

縦軸が カラム C

( Y : 周波数 50 Hz の正弦波 ) の

リサージュ曲線が描画される.

Page 26: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.
Page 27: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

横軸 X が余弦波 X = cos ( 2πf t ) = 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°ずれると、リサージュ曲線は、円になる.

つまり、横軸と縦軸に波形データを入れて、オシロスコープで

円が描出されたら、波形の位相が90度ずれていると判断できる。

Page 28: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.
Page 29: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

作成した ワークシート を保存する.

EXCEL ウィンドウ の左上にある

ファイル メニュー を左クリックする.

メニューの名前を付けて保存 を選択.

ファイルの種類は、 Microsoft Excel

ブック (*. xls ) を選択して、

適当な名前を付けて保存して下さい.

編集後は適宜、上書き保存して下さい.

Page 30: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

カラムB の関数 X を編集する.

( 正弦波の位相を 45°進める. )

セルB2 を左クリックして選択.

関数入力枠を左クリックして

縦線カーソルを出し、編集する.

A2 の右を、+45*3.14/180 と変更.

閉じカッコ ) の右側をクリックして

Enterキーを押して編集完了.

セルB2 から B22 まで黒十字を

ドラッグ.

円を示していた リサージュ曲線が

変化することを確認して下さい.

Page 31: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

カラムB の正弦波 X の位相角 (φ)を 45°刻みで変化させて

リサージュ曲線が変化する様子を観察して下さい.

リサージュ曲線の形状で 2つの交流信号の位相ずれが測定できる

ことを理解して下さい.

φ= 0° φ= 45° φ=90°

Page 32: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

位相角 (φ) が 180°を越えると、

リサージュ曲線が もとの形状に戻っていく様子を観察してください.

φ= 135° φ= 180° φ= 225°

Page 33: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

カラムB の関数 X を編集する.

( 正弦波の位相差を 0°にして

周波数を 100 Hz にする. )

セルB2 を左クリックして選択.

関数入力枠を左クリックして

縦線カーソルを出し、編集する.

SIN ( 2*3.14*100*A2 ) と変更.

セルB2 から B22 まで黒十字を

ドラッグ.

リサージュ曲線が

変化することを確認して下さい.

Page 34: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

カラムB の正弦波 X の周波数 f を 50 Hz 刻みで変化させて

リサージュ曲線が変化する様子を観察して下さい.

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

f = 100 Hz f = 150 Hz f = 200 Hz

Page 35: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

縦軸の交流 Y の周波数 50 Hz に対する

横軸の交流 X の周波数の倍率は 2、3、4 倍.

縦方向に点 (X、Y) が 1 往復する間に、

横方向に往復する回数が 2、3、4 倍に増加していることを

理解して下さい.

Page 36: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

横軸の交流 X の周波数が

f = 150 Hz の リサージュ曲線は

位相差が 0°の場合では、

X 方向に 3往復していることが

わかりにくいので、

X に、位相差を 90°加えると

理解しやすい.

Page 37: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

カラムB の関数 X を編集する.

(正弦波の周波数を 50Hz、位相差を 90°にして、振幅を 2 にする. )

セルB2 の式を = 2*SIN ( 2*3.14*50*A2 + 90*3.14/180 ) と変更.

セルB2 から B22 まで黒十字を ドラッグ.

リサージュ曲線が変化することを確認して下さい.

Page 38: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

EXCEL のグラフ ウィザードは、自動的にデータ表示範囲を

データ幅で揃えてしまうので、一見、交流 X の振幅を変えても

リサージュ曲線が変化しないような印象を与えるが、X、Y軸の目盛り

の値に注目し、楕円 に変化していることを理解して下さい.

X の振幅 A = 0.5 A = 2

Page 39: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.
Page 40: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

VBA ( Visual BASIC for Application)

を使って、リサージュ曲線を回転させる。

Lissajous.xls を

HPからダウンロードしてください。

VBA

Microsoft Office (Excel や Word などのソフトウェア)

に組み込まれた

BASIC 言語によるプログラム、マクロ作成ツール。

使えるようになると 非常に便利。

Page 41: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

リサージュ曲線を回転させるマクロを含む

エクセルワークシートを作成する。

Page 42: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

マクロ 【macro】

ワープロソフトや表計算ソフトなどで、特定の操作手順をプログラムとして記述して自動化する機能。

プログラムの記述に使う言語をマクロ言語という。

よく使う処理をマクロとして保存しておけば、必要なときに簡単に実行できるようになる。

マクロ機能を持ったアプリケーションソフトは、マクロの開発環境や動作環境が用意されている。

できたプログラムは文書ファイルに他のデータと一緒に保存される。

Page 43: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

メニューバーの空白領域を右クリックするとVisual Basic メニューバー表示を選択するリストがでるので、Visual Basic をチェックする。

Page 44: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

これをクリックすると VBA が出る。

Page 45: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

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

Page 46: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

VBA Project ウィンドウの Sheet 1 をクリック。

Sheet 1 で動作する マクロ コードを記述する

ウィンドウが現れる。

Page 47: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

Sheet とは

エクセルの表形式ファイルは、デフォルトでは(特に編集しなければ)

はじめは、3ページ用意され、各ページに Sheet 1,2,3 と名前が

付いている。表の左下に、ページをめくるためのボタン(タグ)が

あるので、押してみて下さい。

Sheet 1、2、3 に別々のデータやマクロを書き込むことができる。

Sheet の追加、削除、名前の変更は自由に可能。

Page 48: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

セルE1 に X amplitude と入力、 F1 に 1 と入力。 (Xの振幅)

セルE2 に X frequency と入力、 F2 に 50 と入力。 (Xの周波数)

セルE4 に Y amplitude と入力、 F4 に 1 と入力。 (Yの振幅)

セルE5 に Y frequency と入力、 F5 に 50 と入力。 (Yの周波数)

Page 49: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

Sheet 1 で動作する マクロ コードを記述する。

まず、sub Lissajous () と入力し、キーボードの

Enter キーを押す。 End Sub 文が自動的に記述される。

Page 50: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

Sub Lissajous () と

End Sub の間に

このコードを記述する。

Page 51: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

コード記入時には、大文字、小文字の区別は不要。

VBAが自動的に大文字が必要な箇所は変換してくれる。

重要な部位のコードは、自動的に青色に変化する。

Sub 関数名() ~ End Sub

Sub は、サブルーチン(プログラムの一部、関数)を記述する範囲を

設定するコード。 関数名は自由に付けられる。

Sub 関数名() と End Sub の間に、実行したいプログラムを書く。

Worksheets ("sheet 1") . Cells ( 1, 6 )

エクセルワークシート の sheet 1 のセル(1,6) の値を指す関数。

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

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

Page 52: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

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,6)つまりセル F1 に書いた値を入れる。xf に、セル(2,6)つまりセル F2 に書いた値を入れる。ya に、セル(4,6)つまりセル F4 に書いた値を入れる。yf に、セル(5,6)つまりセル F5 に書いた値を入れる。

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

類似したコードの繰り返し記述は、コピー (Ctrl C),ペースト (Ctrl V) を使って省力化してください

Page 53: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

For xp = 0 To 360 Step 10

Next xp

For ~ Next 文

変数 xp (ここでは、交流 X の位相 phase) を

0°から 360°まで 10°刻みで増加させながら

For と Next の間に記述されたプログラムを

繰り返し実行する文。

Page 54: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

For i = 2 To 22

Next i

変数 i (ここではワークシートの たての番号)を、2 から 22 まで 1 づつ増加させながらFor と Next の間のプログラムを繰り返し実行する。(Step文が省略されると 増分は 1 になる。)

t = Worksheets ("sheet1") . Cells (i, 1)

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

Page 55: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

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 ) = xWorksheets ("sheet1") . Cells ( i , 3 ) = y

変数 x (交流X)の値を、xa, xf, xp から求め、

変数 y (交流Y)の値を、ya, yf から求める。

求めた x, y の値を、それぞれ

カラムB (左から2番目)と カラムC (左から3番目)

の、上から i 番目のセルに入力される。

Page 56: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

For i = 2 To 22

t = 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 が 10 づつ増加するごとに実行され、カラムBとカラムCの上から2番目から22番目の数字が変化するたびに、グラフに表示されるリサージュ曲線が変化する。

Page 57: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

For xp = 0 To 360 Step 10

MsgBox ("X phase = " & xp)

DoEvents

Next xp

交流Xの位相 xp が 10づつ増加するたびにリサージュ曲線が変化する様子を観察したいが、For ~ Next 文の間に、小休止を入れないとプログラムが瞬時に終了して、観察できない。そこで、 For ~ Next ループの中に、ループを一時停止させるためのMsgBox () 関数 (メッセージボックス) を入れる。

DoEvents は、グラフを再描画させるコマンド(命令)。

Page 58: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

MsgBox ("X phase = " & xp)

MsgBox () メッセージボックス関数

For ~ Next 文の中に入れると、ループが1回回るたびに、エクセルワークシート上にメッセージボックスが現れる。その中の OK ボタンをクリックしないと、次のループが回らない。

メッセージボックス内には、文を表示できるので、"X phase = " & xp を表示させる。

" " で挟まれた文字はそのまま表示される。変数 xp を入れると、変数の値が表示される。

&記号は、文字または数字をつなぐ働きを持つ。

Page 59: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

作ったプログラム(マクロを含むファイル)の保存方法。Excel の ファイルメニユー 名前をつけて保存を選択。

Page 60: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

VBAのマクロを加えたエクセルプログラムは、VBAウィンドウのファイルメニューではなく、

Excelのファイルメニューから保存する。

Page 61: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

Excel2007では、Excel97-2003ブック形式のファイルで保存する。

Page 62: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

ファイルを保存したら、一度エクセルを終了する。再度、マクロを含むエクセルファイル(ブック)を開く。Excel のセキュリティが高く設定されているとこのような警告が出て、プログラムが開かない。

Page 63: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

Excel のセキュリティ を下げる方法。ツール ー マクロ - セキュリティ を選択

Page 64: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

Excel のセキュリティレベルを 中 に選択。

Page 65: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

再度、作成したExcel ファイル(ブック)を開くとこのようなダイアログがでるので、マクロを有効にする を選択。

Page 66: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

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

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

Page 67: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

Excel情報画面の左端に並ぶメニューの一番下の、オプションを クリック。

Page 68: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

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

Page 69: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

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

セキュリティセンターの設定をクリック。

Page 70: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

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

最後に、右下の OK ボタンをクリックする。

そして、一度 Excel を終了させる。

再度Excelを起動するとマクロが作動する。

Page 71: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

Office2007 の Excel 2007 で

VBA ( Visual BASIC for Application)

を使えるようにする方法

メニューをクリック

Excelのオプションをクリック

Page 72: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

アドインを

クリック分析ツール – VBA

をクリックして選択

設定またはOKをクリック

Page 73: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

アドイン ダイアログが現れるので、分析ツール – VBA にチェックを入れてOKをクリック

Page 74: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

VBA を Excel に インストール しますか、と聞かれるので、はい をクリック。

Offce2007のインストールDVDの挿入を要求される場合もありうる。

Page 75: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

VBA の インストール進行状況が表示される。数分かかる場合もある。

Page 76: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

表示タグをクリックして、マクロ のアイコン が表示

されれば、VBAが使える状態。

Page 77: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

Excelを再起動したら、Lissajous.xlsを起動させて、マクロが作動するか確認して下さい。

ここの数字を200や25などにかえて観察してください。

Page 78: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

VBAマクロ実行ボタンをクリック

Page 79: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.
Page 80: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

マクロを実行し、メッセージボックスのOKボタンを押して、

リサージュ曲線が回転する様子を観察してください。

OKボタンを押しても曲線が動かない不都合が生じる。

メッセージボックスの位置をマウスで移動させると動く。

Page 81: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

メッセージボックスのOKボタンを押しただけでは

リサージュ曲線が回転しない理由は、

エクセルワークシート内のグラフが再描画されない

ため。

ワークシート内の数字などに変更が生じた場合に

ワークシートを再計算 (再描画)するコマンド(命令)

DoEvents

(古いマクロは Calculate と書いてあるのでDoEvevts に修正してください。

を、マクロのプログラムに追加する。

Page 82: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

VBAボタンをクリックしてマクロを編集する。

Page 83: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

このコードを記述する。

Page 84: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

Excel のVBAマクロ実行ボタンをクリック。OKボタンを押すと曲線が再描画されて回転することを確認して下さい。

Page 85: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

End Sub の下に

Sub Lissajous2( )

と記述して

Enter キーを押す。

マクロを追加する。

リサージュ曲線が自動的に回転する

マクロ Lissajous2 を作成する。

Page 86: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

Sub Lissajous2() の下に End Sub が現れる。

Sub Lissajous2() と End Sub の間に

Sub Lissajous() と同じプログラム(コード)を

記述する。( Sub Lissajous() からコピーして

貼り付けて下さい。)

複数のマクロが連続して表示されるモード

マクロが1つずつ表示されるモード

Page 87: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

xp の最大値を 360 に、

xp の増分値を 1 に変更。

DoEvents の下に記述されていた

MsgBox ("X phase = " & xp)

を削除する。

マクロ Lissajous2 の編集を行う。

Page 88: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

Excel のVBAマクロ実行ボタンをクリックするとマクロ選択ダイアログ内に新たなマクロ Lissajous2が出る。これを選択。

Page 89: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

xp の増分値を1にしたので( step 1 )

(プログラム中の step 1 は、省略できる。

For 文の中で step 文が省略されると

step (増分)は 1 と解釈される。)

自動的にリサージュ曲線が1度刻みで回転する

グラフが出現する。

xpの最大値を 720 にしたら、リサージュ曲線は、

2回転 (360°x 2 ) してプログラムが止まる。

各自、xp の増分や最大値、XとYの振幅、周波数の

値を変えて、描画されるリサージュ曲線の変化を

確認して下さい。

Page 90: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

今回作成したマクロは、

必要最低限の機能しか記述していないので、

各自、工夫してマクロコードの改良を試みてください。

例: 自動的にXとYの周波数比が変化していくマクロ、

曲線の色が変化するマクロ、

リサージュの立体的表示を行うマクロ、

など。

Page 91: 医用工学概論 Medical Engineering (ME) 3年前期 …chtgkato3.med.hokudai.ac.jp/kougi/ME_practice/MEpractice...セルA2からA22まで 0 から0.02 までの数字が自動的に入力される.

VBAを解説した

書籍やホームページ

は多数ある。

臨床検査技師は

数字データを多く扱う

職業なので、

VBAが使えると

非常に仕事が楽になる

場合が多い。