別棟備忘録4

*

Medianフィルタ

      2015/10/25

備忘録エントリー「DataGridView」と「バブルソート
DataGridViewはVisualBasicでテーブルを扱う時の代表格。使い方はWebで調べたものの、未だよく分からん部分多し。
とりあえず少なくとも「最初にテーブルの行列数を決めたい」+「列の幅等指定したい…」現状は「行の追加」と「セルへの書き込みと読み出し」の把握のみ。ソースコード!


Public Class medianck
Private data(4) As Integer
Private rnd As Random = New Random()
Private Sub Startbutton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Startbutton1.Click
Dim Tmp As Integer
For i = 0 To 4
data(i) = DataGridView1(i, 0).Value
Next i
‘バブルソート
For h = 0 To 4
For k = 0 To 3
If data(k) < data(k + 1) Then Tmp = data(k) data(k) = data(k + 1) data(k + 1) = Tmp End If Next k Next h 'ソートしたデータの記入 For j = 0 To 4 DataGridView1(j, 1).Value = data(j) median.Text = data(2) Next j End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Randombutton.Click For i = 0 To 4 DataGridView1(i, 0).Value = rnd.Next(500) Next End Sub Private Sub medianck_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load DataGridView1.Rows.Add(1) '列の追加 End Sub End Class

・落し物・
サンプルプログラム:median.zip
median.jpg
Randomボタンで乱数5つを1行目に放り込む。その後…
データ処理ボタンを押すと、5つの乱数を大きい順にソートする。このソートには様々な種類があるが、ここではバブルソートという最も記述が簡単な(しかし、時間のかかる)方法。
この場合、「前から2つずつ比較し、小さい方を後ろに入れ替える。」を桁数回繰り返すというもの…多分。
3 7 5 8
7 3 5 8
7 5 3 8
7 5 8 3
7 8 5 3
8 7 5 3
…という方法。
そして、真ん中の値をLabelに書き出し。
Wii位置座標計はLEDのどちらかが認識されなかったとき、頓珍漢な値を示す。
測定値をバッファしてその中間値を吐き出すMedianフィルタでちょっとはまともにならないか…と考えるわけである。

 - Wiiリモコン→座標計