import numpy as np
import math
import matplotlib.pyplot as plt
dataX = np.linspace(0, 2*np.pi, 300) #頻率1/2/Pi ~0.15 Hz
dataY = np.sin(dataX)
xf = np.fft.fft(dataY) #利用numpy中fft函式庫中的fft函數 將數據點進行快速傅立葉轉換
inv_dataY=np.fft.ifft(xf) #利用numpy中fft函式庫中的ifft函數 將數據點進行快速逆傅立葉轉換
freq = np.fft.fftfreq(300/2/np.pi, d=1/2/np.pi) #利用 np中的fftfreq(N,d)函數產生頻域的X軸(頻率)數值, 其中N是值域的取樣數目, D是取樣週期間隔
plt.figure(1)
plt.subplot(311)
plt.title(r'sine wave')
plt.plot(dataX, dataY, marker="o", linestyle=' ',color='#0F0F0F')
plt.subplot(312)
plt.title(r'FFT result of sine wave')
plt.plot(dataX, xf,'g-' );
plt.subplot(313)
plt.title(r' iFFT result of converted sine wave')
plt.plot(dataX, inv_dataY,'b-' );
plt.subplots_adjust(hspace=0.5, left=0.05, right=0.95, bottom=0.05, top=0.95)
plt.show()