Python FFT & IFFT

FFT & IFFT Filter プログラムまとめ

ここまで、FFT & IFFT Filter プログラムの個々に区切った説明をしてきました。
引き続き、以上の内容をまとめたファイルを以下に示します。


  #!/usr/bin/python3
  # -*- coding: utf-8 -*-
  import numpy as np
  import matplotlib.pyplot as plt
    
  fs = 128                 # number of samples
  amp0, amp1 = 0.8, 0.15   # amplitude
  freq0, freq1 = 2.0, 15.0 # freq

  t = np.linspace(0, 2*np.pi, fs)
  base = amp0*np.sin(freq0*t) # 基本波
  nois = amp1*np.sin(freq1*t) # ノイズ

  plt.plot(t, base)        # 基本波 表示
  plt.plot(t, nois)        # ノイズ 表示
  plt.show()

  signal = base + nois     # 基本波 + ノイズ
  plt.plot(t, signal)      # 基本波 + ノイズ 表示
  plt.show()

  f = np.fft.fft(signal)   # フーリエ変換(FFT)
  f_abs = np.abs(f)
  plt.plot(f_abs[:int(fs/2)+1])
  plt.show()

  fc = 14                  # cut off
  f[fc:]=0                 # low pass filter
  f_abs = np.abs(f)
  plt.plot(f_abs[:int(fs/2)+1])
  plt.show()

  f_ifft = np.fft.ifft(f*2)  # 逆フーリエ変換(IFFT)
  f_real = np.real(f_ifft) 
  plt.plot(t, f_real)
  plt.show()

本内容を TeraPad 等で作成したら、ファイル名を適当に
si_fft_filter.py
として保存します。
文字コ-ドは、UTF-8N
BOM なし
改行コ-ドは、LF
です。
保存先はホスト Wimdows OS の 共有フォルダ c:\vb_public_html にして、 ブラウザでアクセスできるようにします。
なお、
c:\vb_public_html
はゲスト OS Ubuntu のなかの
/home/yamada/public_html
とリンクしていて共有フォルダの関係にあります。
詳細は ユ-ザ-ごとの公開ディレクトリを用意する を読んでみてください。

si_fft_filter.py ファイル動作確認

それでは s_fft_ifft.py ファイルを実行してみましょう。
Ubuntu ディスクトップにある □>_ アイコンから端末画面を開き、 public_html ディレクトリに移動します。
yamada@ubuntu-20:~$ cd public_html
私の Virtual Ubuntu も 20.04LTS にアップグレ-ドしてしまいました。
yamada@ubuntu-20:~/public_html$ python3 si_fft_filter.py
として確認します。

  • si_fft_ifft.py 実行結果-1
  • Matplotlib の表示画面が出現し、上図のような元波形のグラフが表示されますので ×印をクリックして、次に進めます。
    今度は、基本波 + ノイズ波形が表示されます。

  • si_fft_ifft.py 実行結果-2
  • 再び、×印をクリックして、次に進めます。
    今度は、FFT 結果画面が表示されます。

  • si_fft_ifft.py 実行結果-3
  • 再び、×印をクリックして、次に進めます。
    今度は、ロ-パス処理後の FFT 結果画面が表示されます。

  • si_fft_ifft.py 実行結果-4
  • 再び、×印をクリックして、次に進めます。
    今度は、ロ-パス処理後の IFFT 結果画面が表示されます。
    ノイズ波形がなくなっているのを確認することができます。

  • si_fft_ifft.py 実行結果-5
  • ここまでで、FFT & IFFT Filter プログラムの確認が終わりました。
    引き続き、豪ドル/円 CSV ダウンロ-ドデ-タ FFT 解析に挑みます。


  • 豪ドル/円 CSV デ-タ FFT 解析 に進む
  • FFT & IFFT Filter プログラム に戻る
  • 単純な FFT & IFFT プログラム に戻る
  • Python FFT & IFFT 概要 に戻る
  • 70VPS に戻る