Document

授業計画
14.アプリケーションの作成
アプリケーションの作成を通したプログラムの理解
14.1 確認・提出事項
レポート提出
14.2 授業内容
移動平均法
プログラムの復習
すべてのレポートの提出期限
1月21日 火曜日
これ以降はレポートを受け取りません!
14.3 移動平均法
移動平均法を用いたノイズの除去
14.4 プログラムの復習
演習
基本的なプログラムの例
14.5 レポート課題
本日のレポートが最後になります。
14.6 その他
試験は2月4日(火)の1限、第二端末室で行います。
出題範囲は配布したプリントです。
印刷されていないもの(パワーポイントのみで紹介したテクニックなど)は、
テスト範囲に含みません。
語句、演習、例題、レポート等をよく見直しておいてください。
最初のExcelに関する部分も復習しておくこと。
※これまでの授業用資料、レポート課題等は
http://cb.apc.kagoshima-u.ac.jp/~higolabo/proex/proex.htm
にアップロードしてあります。
レポート提出先 満塩([email protected])
14.アプリケーションの作成
【移動平均法】
科学にエクセルを利用する利点は、大量のデータを統計的に処理出来る点である。
計算精度はMathmatica等よりも劣るが、簡単にデータを視覚化することができる。
コントロールの利用やセルを使用した基本的なプログラミングについて、
これまで勉強してもらったが、ここからはプログラムを使った
データ処理について勉強する。
【3点移動平均法を用いたノイズの平滑化】
【演習1】コマンドボタンを配置し、以下のプログラムを入力せよ。
(コメントは省略しても良い)
Dim i As Integer
'i For~Next用のカウンタ
Dim a As Single, b As Single, rad As Single
'a,b Sinの値代入用、rad ラジアン変換用係数
rad = 2 * 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 'カウンタ
For i = 1 To 3000
a = Cells(i, 1).Value
If a = "" Then Exit For
b = Cells(i, 1).Value
b = b + Rnd(1) * 0.4 - 0.2
Cells(i, 1).Value = b
Next
'|アルゴリズム教室「データ最終行を探す」
'|セルのチェック
'|空白だったら終了
'今度は小数の数字としてbに読み込み
'ノイズを混入
'セルに書き戻し
【演習3】コマンドボタンを配置し、以下のプログラムを入力せよ
Dim a As String 'セルのチェック用
Dim aa As Single, bb As Single, cc As Single, ave As Single
'aa,bb,cc セルの読み込み用、ave 平均用
Dim i As Integer 'カウンタ
For i = 2 To 3000
a = Cells(i + 1, 1).Value
If a = "" Then Exit For 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
Next
'|1行下(i=2)からはじめて
'|注目点の1行下(i+1)をチェックする
'|これは注目点の上下の行を使用するため
'注目点のひとつ上
'注目点
'注目点のひとつ下
'平均算出
'平均を注目点の隣のセルに書き込み
アナログデータは、いくらノイズ除去を行っても元のデータに戻ることはない。
しかし、統計的な意味を持ったノイズ除去を行うことで、その後の解析を
容易にすることができる。
【プログラムの作成の復習】
・基本的なプログラムの例
・繰り返す
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前後)
※プログラムによっては「入力」不要。
ただし、必ず何らかの処理→出力の動きを持たせること。