シェアする

  • このエントリーをはてなブックマークに追加

【NumPy】高速逆フーリエ変換とローパスフィルタでノイズ除去

スポンサーリンク
ビッグバナー(上2)

この記事では、Python言語とNumPyを用いて、高速逆フーリエ変換とローパス処理を行い、ノイズを取り除く方法をソースコード付きで解説します。

ノイズ除去の流れ

NumPyを用いた高速フーリエ変換・逆フーリエ変換の基本的な使い方は下記事で紹介しています。
【NumPy】高速フーリエ変換
【NumPy】パワースペクトル解析
【NumPy】高速逆フーリエ変換

今回は、これらを応用して、サンプルデータからノイズ成分をカットし、データを平滑化してみます。

【処理手順】
①株価データ(CSVファイル)を読み込む。
②高速フーリエ変換を行う。
③ある周波数(fs)より高い成分をカットする。(ローパスフィルタで0にする)
④逆高速フーリエ変換する。
⑤サンプルデータと変換後のデータをグラフ表示する。

ソースコード

サンプルプログラムのソースコードは下記の通りです。

■使用したデータ:nikkei.csv
(2016年の日経平均株価のデータ)

実行結果

サンプルプログラム実行結果は下記の通りです。
2016年の1年分の日経平均株価の終値をサンプルとしています。

左のグラフは、サンプルデータ(日経平均株価の終値)です。(単位は千円)
右のグラフは、FFT処理→ローパス処理→逆FFT処理され、平滑化されたデータです。
高周波成分(ノイズ)が除去され、平滑化されていることがわかります。

【関連記事】
Python入門 基本文法
NumPy入門 サンプル集

スポンサーリンク
レクタングル(下2)
レクタングル(下2)