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
として確認します。
Matplotlib の表示画面が出現し、上図のような元波形のグラフが表示されますので
×印をクリックして、次に進めます。
今度は、基本波 + ノイズ波形が表示されます。
再び、×印をクリックして、次に進めます。
今度は、FFT 結果画面が表示されます。
再び、×印をクリックして、次に進めます。
今度は、ロ-パス処理後の FFT 結果画面が表示されます。
再び、×印をクリックして、次に進めます。
今度は、ロ-パス処理後の IFFT 結果画面が表示されます。
ノイズ波形がなくなっているのを確認することができます。
ここまでで、FFT & IFFT Filter プログラムの確認が終わりました。
引き続き、豪ドル/円 CSV ダウンロ-ドデ-タ FFT 解析に挑みます。