pythonでFFTしてみた
便利な世の中になったもんだ。
参考にしたのは
org-technology.com
ism1000ch.hatenablog.com
など。
ソースは以下。
import numpy as np from scipy.fftpack import fft from scipy.fftpack import fftfreq from scipy.fftpack import fftshift import matplotlib.pyplot as plt import pandas as pd #データ数 N = 800 #サンプリング周期(sec) dt = 0.001 #周波数 f = 5.0 #時間軸 t = np.linspace(1,N,N) * dt - dt #時系列データ y = np.sin(2 * np.pi * f * t) #周波数軸(MATLAB等で言うfftshiftがかかっている) freq = fftfreq(N,dt) #FFT yf = fft(y) plt.figure(1) plt.xlabel("time(sec)") plt.ylabel("value(a.u.)") plt.plot(t,y) plt.figure(2) plt.xlabel("freq(Hz)") plt.ylabel("amplitude(a.u.)") plt.plot(freq,np.abs(yf)) #plt.plot(freq,np.real(yf)) #実部 #plt.plot(freq,np.imag(yf)) #虚部 print(np.real(yf)) plt.show() df = pd.DataFrame(freq) df.to_csv("freq.csv")
5Hzのsin波
FFT結果(power)