Document

授業計画
14.アプリケーションの作成
アプリケーションの作成を通したプログラムの理解
14.1 確認・提出事項
レポート提出
14.2 授業内容
移動平均法の応用
プログラムの復習
14.3 移動平均法の応用
移動平均法を用いたノイズの除去
14.4 プログラムの復習
演習
基本的なプログラムの例
14.5 レポート課題
本日のレポートが最後になります。
すべてのレポートの提出期限
1月24日 火曜日
これ以降はレポートを受け取りません!
14.6 その他
試験は 2 月 7 日(火)の 1 限、301 号教室で行います。
出題範囲は配布したプリントです。
印刷されていないもの(パワーポイントのみで紹介したテクニックなど)は、
テスト範囲に含みません。
語句、演習、例題、レポート等をよく見直しておいてください。
最初の Excel に関する部分も復習しておくこと。
※これまでの授業用資料、レポート課題等は
http://ace.cen.kagoshima-u.ac.jp/bunseki/proex/proex.htm
にアップロードしてあります。
レポート提出先 満塩([email protected])
14.アプリケーションの作成
【移動平均法の応用】
科学にエクセルを利用する利点は、大量のデータを統計的に処理出来る点である。
計算精度はMathmatica等よりも劣るが、簡単にデータを視覚化することができる。
コントロールの利用やセルを使用した基本的なプログラミングについて、
これまで勉強してもらったが、ここからはプログラムを使った
データ処理について勉強する。
【3点移動平均法を用いたノイズの平滑化】
【演習1】コマンドボタンを配置し、以下のプログラムを入力せよ。
(コメントは省略しても良い)
Dim i As Integer
'i For~Next用のカウンタ
Dim a As Integer, b As Integer, rad As Single
'a,b Sinの値代入用、rad ラジアン変換用係数
rad = 3.1415 / 360
'ラジアン変換用係数
For i = 1 To 360
a = Sin(i * rad)
'短波
b = Sin(i * rad * 6) '長波
Cells(i, 1).Value = a + b '合成
Next
【演習2】コマンドボタンを配置し、以下のプログラムを入力せよ
Dim a As String 'セルのチェック用
Dim b As Single 'セルの読み込み用
Dim i As Integer 'カウンタ(Do~Loop内で使用)
i = 0
'変数の初期化
Do
i = i + 1
a = Cells(i, 1).Value
'セルのチェック
If a = "" Then Exit Do
'空白だったら終了
b = Cells(i, 1).Value
'今度は小数の数字としてbに読み込み
b = b + Rnd(1) * 0.4 - 0.2 'ノイズを混入
Cells(i, 1).Value = b
'セルに書き戻し
Loop
【演習3】コマンドボタンを配置し、以下のプログラムを入力せよ
Dim a As String 'セルのチェック用
Dim aa, bb, cc, ave As Single 'aa,bb,cc セルの読み込み用、ave 平均用
Dim i As Integer 'カウンタ(Do~Loop内で使用)
i = 1
'変数の初期化、一段下から始める
Do
i = i + 1
a = Cells(i + 1, 1).Value
'セルのチェック
If a = "" Then Exit Do '空白だったら終了
aa = Cells(i - 1, 1).Value '注目点のひとつ上
bb = Cells(i, 1).Value
'注目点
cc = Cells(i + 1, 1).Value '注目点のひとつ下
ave = (aa + bb + cc) / 3
'平均算出
Cells(i, 2).Value = ave
'平均を注目点の隣のセルに書き込み
Loop
アナログデータは、いくらノイズ除去を行っても元のデータに戻ることはない。
しかし、統計的な意味を持ったノイズ除去を行うことで、その後の解析を
容易にすることができる。
【プログラムの作成の復習】
・基本的なプログラムの例
・繰り返す
For i = 1 To 10
Next
:iが1~10になるまで繰り返す。
iの数字が1から10まで変化していくので、
これを利用すると連続的な処理が容易になる。
For i = 10 To 1 Step -1 :iが10~1になるまでを繰り返す。
iの数字が10から1とカウントダウンしていくので、
Next
これを利用すると連続的な処理が容易になる。
・条件判断
If [条件] Then [処理]
または
If [条件] Then
[処理]
End If
:条件が満たされると、処理が実行される
[条件]
i = 3 :iが3のとき
i = v :iとvが等しいとき
v <> i :iとvが等しくないとき
v < 2 :vが2より小さいとき
v >= 2 :vが2以上のとき
・セルから入力
a = Cells(1, 1).Value
:A1の内容を変数aに入力
a = Cells(y, x).Value
:x列y行の内容を変数aに入力
For i = 1 To 5
:A1~A5の内容を配列変数a(1)~a(5)に入力
a(i) = Cells(i, 1).Value
Next
・セルへ出力
Cells(1, 1).Value = a
:変数aの内容をA1に出力
Cells(1, 1).Value = "文字列" :「文字列」をA1に出力
Cells(x, y).Value = a
:変数aの内容をx列y行に出力
For i = 1 To 5
:配列変数a(1)~a(5)の内容をA1~A5に出力
Cells(i, 2).Value = a(i)
Next
・インプットボックスからの入力
a = InputBox("質問文", "タイトル") :インプットボックスで入力を促す
・メッセージボックスの出力
MsgBox a
:変数aの内容をメッセージボックスで表示
re = MsgBox("メッセージ", 1, "タイトル")
:メッセージを表示し、返答を変数reに入力
プログラムを作成せよ。内容、コントロールの使用は全て自由とする。
※ただし、入力→処理→出力の流れを持ったものであること。
配点は20点で、内容10点、プログラム技術10点で採点する。
特にアイデアがない場合は例を参考にせよ。
(例と同程度でアイデア、プログラムともに8前後)
※プログラムによっては「入力」不要。
ただし、必ず何らかの処理→出力の動きを持たせること。