見出し画像

Python in Excel-9/ハイパスフィルターの使用

こんにちはロック204チャンネルです。
今回は「Python in Excel 第9回 ハイパスフィルターの使用」についてお送りします。


ハイパスフィルターは、低周波領域の周波数を除去するために使います。
例えば筋電図を測定する際、体の動きによって混入する緩やかな雑音を除去するためなどに使用されます。
ここにサンプルプログラムを紹介します。
最初に使用するモジュールをインポートします。
Pandasとnumpy、そしてハイパスフィルターに使用するscipy.signalモジュールよりbutterとfiltfiltをインポートします。

次にフィルターを設定する関数を定義します。
“data” は入力データを、numpyのarrayとして設定します。
“cutoff”は、カットオフ周波数を表します。
“fs”は、サンプリング周波数。
“order”は、フィルターの次数。
“y”は、出力データを表します。
8行目は、ナイキ周波数を計算する式です。
そして9行目で通過周波数の正規化を行っています。
10行目では、butter関数を使用し、フィルターに使用する係数a,bを求めています。
そして11行で求められた係数と入力データをfillfill関数に入れフィルターをかけます。
その結果はyに代入され戻り値として出力されます。

こちらのコードは、サンプリング周波数の生成パラメーターの設定とサンプルデータの設定、生成およびグラフ化のコードとなります。
最初の1行から5行にかけて生成パラメーターを設定しています。
そして9行目で乱数生成器のシードを設定し。
10行目で時間軸の生成。
12行でサンプル波形の生成を行ない。
13行目でこのデータをDataFrameとして変数dfに出力しています。
そして14行以降で、このサンプル波形をグラフ化しています。

こちらがフィルターを適用する前のサンプル波形となります。
大きく変動していることがわかります。

こちらのコードはハイパスフィルターをかけグラフ化するものです。
最初に2行目で先ほど設定したhightpass_filter関数を使用してフィルターを適用しています。
そして、その出力を”filtered_data” に入力します。
4行目では、このデータをデータフレームとして”out_data”に入力します。
6行目以降はこのデータを用いてグラフ化するプログラムとなっています。

こちらが先ほどのプログラムによって出力されたグラフとなります。
ハイパスフィルターを適用したので、大きな変動が取り除かれ、このようなグラフとなりました。
以上でプログラムの説明を終わります。

このファイルはPython in Excelの実行環境で利用できます。

いいなと思ったら応援しよう!