【NumPy】高速逆フーリエ変換 (IFFT)

この記事では、Python言語とNumPyを用いた高速逆フーリエ変換(IFFT)の使い方をソースコード付きで解説します。

高速逆フーリエ変換

高速逆フーリエ変換(Inverse Fast Fourier Transform:IFFT)とは、その名の通り高速フーリエ変換の逆の処理です。
周波数領域に変換したデータを、再度時間軸のデータに戻します。
PythonモジュールNumpyでは「numpy.fft.ifft」を用いることで高速逆フーリエ変換を実装できます。

書式

numpy.fft.ifft(ndarray)

■引数
ndarray:Numpy配列

■返り値
逆フーリエ変換の結果

ソースコード

サンプルプログラムのソースコードです。

# -*- coding: utf-8
import numpy as np
import matplotlib.pyplot as plt

def main():
    # CSVのロード
    data = np.genfromtxt("nikkei.csv",delimiter=",", skip_header=1, dtype='float')
    
    # 5行目を抽出(日経平均株価の終値)
    f = data[:,4]/1000.0

    # サンプル数
    N = len(f)
    
    # 高速フーリエ変換
    F = np.fft.fft(f)
    
    # 高速逆フーリエ変換
    f2 = np.fft.ifft(F)
 
    # グラフ作成
    plt.figure(1)
    
    # サンプル(日経平均株価)
    plt.subplot(221)
    plt.plot(f)
    plt.xlabel("Time")
    plt.ylabel("f")

    # 振幅
    plt.subplot(222)
    plt.plot(f2)
    plt.xlabel("Time")
    plt.ylabel("f2")
    
    # グラフ表示
    plt.show()
    
if __name__ == "__main__":
    main()

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

実行結果

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

左のグラフは、サンプルデータ(日経平均株価の終値)です。(単位は千円)
右のグラフは、FFT処理→逆FFT処理されデータです。
結果的に元に戻しているので一致していることがわかります。

おすすめ記事

Python入門 サンプル集
NumPy入門 サンプル集

シェア&フォローお願いします!