import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
Fs = 150 # サンプリングレート(回数)
Ts = 1.0/Fs # サンプリング時間間隔
t = np.arange(0, 1, Ts) # 時刻データ(ベクトル)
f = 5 # 周波数(5Hz)
y = np.sin(2 * np.pi * f * t) # sin(2Πft)
plt.subplot(2,1,1) #入力波形の表示
plt.plot(t,y,'k-')
plt.xlabel('time')
plt.ylabel('amplitude')
n = len(y) # 信号の総サンプルリング数
k = np.arange(n) # 1,2,3,...,(n-1)
T = n/Fs
frq = k/T # 周波数レンジ(two side)
freq = frq[range(n/2)] # 周波数レンジ(one side)
Y = np.fft.fft(y)/n # FFT & 正規化
Y = Y[range(n/2)]
plt.subplot(2,1,2) #出力波形の表示(FFT結果)
plt.plot(freq, abs(Y), 'r-')
plt.xlabel('freq (Hz)')
plt.ylabel('|Y(freq)|')
plt.show()