scipyのfftメソッドは二つありますがscipy.fftを使うことが推奨されてるようです。
コード
import matplotlib.pyplot as plt import numpy as np from scipy.fft import fft, fftfreq f0 = 1000 fs = 96000 N = 5000 addnum = 5.0 def create_sin_wave(amplitude,f0,fs,sample): wave_table = [] for n in np.arange(sample): sine = amplitude * np.sin(2.0 * np.pi * f0 * n / fs) wave_table.append(sine) return wave_table # 信号波形の生成 wav = create_sin_wave(1.0,f0,fs,N) # FFTの実行 X = fft(wav[0:N]) freqList = fftfreq(N, d=1.0/ fs) amplitude = np.abs(X)/(N/2) # 波形を描画 plt.subplot(211) plt.subplots_adjust(hspace=0.5) plt.plot(range(0,N), wav[0:N],label = "wave1") plt.axis([0, 500, -1.0, 1.0]) plt.xlabel("sample") plt.ylabel("amplitude") # 振幅スペクトルを描画 plt.subplot(212) plt.plot(freqList, amplitude, marker='.', linestyle='-',label = "fft plot") plt.axis([0, 20000, 0, 2]) plt.xlabel("frequency [Hz]") plt.ylabel("amplitude") plt.show()
FFT結果