第13回 信号処理の基礎:ディジタルフィルタ


今回は,関数,配列,ポインタ変数,グローバル変数などを駆使し,信号処理の基礎,ディジタルフィルタに
ついて学習する.

信号処理とは?

実験等で用いる計測器や自分で作成した測定装置からは,温度や力,圧力,速度,変位など様々な数値
データが得られる.
これら「計測生データ」をもとに,平均値や分散,標準偏差,最大値,最小値,中央値などの統計量を算出し,
実験結果の評価や考察が行われる.
データ数が数個から数十個程度であれば,紙に記録したりExcelに手で入力しても手間ではないが,データ
数が膨大になると人力で計算することは時間もかかり,計算間違いを生ずる可能性も高くなる.
ここでは,計測データとしてある計測値が時間的または空間的に次々と得られる場合の処理法について学ぶ.
特に時間の経過に対するある物理量の変化を時々刻々と捉えたものは「時系列データ」と呼ばれ,計測データ
の最も一般的なな形である.

時系列データの例(括弧内は対応する物理量)

フィルタとは何か?

これからの実験や卒業研究では,様々な時系列データ測定を行う.
測定で必ず悩まされるのは,自らが測定したいものが正確・精密に測れているのか?,という問題である.
(計測の「正確さ」や「精密さ」等の概念に着いては,実験で学ぶ.)
オシロスコープで得られた波形の生データを観察しても,何やら細かい波形が混ざっていたり,およそ測るもの
と関係なさそうなうねりが延々と続いたりして,欲しい信号が取り出せていないと感じることもある.
この,「測っているものとは関係ない」信号は,「ノイズ」と呼ばれる.
以下のような測定システムの場合,ノイズはいろいろなところから発生すると考えられる.


              図1 ノイズの侵入経路

実験装置をいくらきちんと作っても回避できないノイズは起こり得る. 従って,計測をする際にはフーリエ変換を
行うことで周波数成分の構成を解析するのも一策だが,対象とする信号の周波数(振動数)がある程度分かって
いるような場合には,対象以外の信号を除外場外するような工夫をするのが大変有効といえる.

そこで,計測データ(=数値の羅列)に対してある操作を行い,必要な信号成分と不要なノイズ成分を何らかの
方法で分離できれば,信号の質を改善することが出来る.
このような目的のための処理手法は「フィルター」と呼ばれ,これを計算機に取り込む前の段階(=電子回路内)
で行うことをアナログフィルターと呼ぶ. 一方,A/D(アナログからディジタル)変換して計算機内に取り込んだ
後の数値データに対して,何らかの方法で信号とノイズを分離する方法をディジタルフィルターと呼ぶ.

フィルターにはその役割に応じて,ローパスフィルタ(LPF),ハイパスフィルタ(HPF),バンドパスフィルタ(BPF),
ノッチフィルタ,そのほか,ローシェルフフィルタ,ハイシェルフフィルタ,ピーキングフィルタなどがあって,不要な
帯域の信号を減衰させ,必要な情報を取り出しやすくすることができ,電気回路またはソフトウエアによって実現
されることが多い.

C/C++によるディジタルフィルタプログラム

ソースファイル→filter.cpp

このソースファイルでは,最初に正弦波データを生成,乱数によるノイズを添加して波形を生成する.
次に,ディジタルフィルターを作用させ,結果を表示する. ここでは乱数をノイズとして用い,プログラム中のrand()
関数は,呼ばれるたびに0からRAND_MAXという定数までの間の整数の中から,ランダムに値を返す.


課題1

文献,Web等を用いて,ディジタルフィルタについて以下の観点から調べ,Wordファイル(.docx形式)に記せ. なお,どのWebサイトまたは書籍を参照したか,必ず記載すること.即ち,参考文献リストを作ること.
情報処理1,工学文書の作り方を参照し,正しく記載すること.引用無きコピー・ペーストは盗作と見なされるので
注意.)

課題2

filter.cppを参考に,正弦波にノイズが加わったノイズデータをcsvに出力し,それぞれの波形を確認せよ.
数値データは画面に出力するのではなく,csvファイルに出力するよう改良せよ.
次に,(a)移動平均フィルタ(隣接する値の平均を計算),(b)微分フィルタ(隣接する値の引き算)を作用させ,波形がどのように変わるか確認せよ.方法はソース内を参照.
計算結果は以下のようになる.

            図2 3点平均化処理


            図3 微分フィルタ

計算に用いたソースファイルおよび結果のグラフをExcel形式(.xlsx)で提出せよ.

課題3

課題2の移動平均フィルタにおいて,移動平均の点数を増加(5点,7点,9点など)させ,フィルター後の波形がどのように変化するか比較せよ.
計算に用いたソースファイルおよび結果のグラフをExcel形式(.xlsx)で提出せよ.