手元のデータ(座標の時期列データ)がとてもノイズが多いので、それを平滑化したいと考えています。指導教官に相談したところ、シグナルがあるんだったら、FFTで周波数解析して、ノイズの原因であろうピークの周波数のデータを除去したら?と助言をいただいてので、FFTの勉強をはじめました。以下のような簡単なサイン関数であればFFTで振幅と周期は求められたのですが、実際のデータをみると、ピークがたくさんあり、どれを処理していいかわかりません。なにかアイデアもしくはアドバイスしていただけないでしょうか。
python
1freq, N =3, 32 2f = np.sin(freq * 2 * np.pi * (np.arange(N)/N)) 3 4f = f[~np.isnan(f)] 5plt.plot(f) 6# df.diff() 7# F = np.fft.fft(np.abs(f)) 8F = np.fft.fft((f)) 9N = F.shape[0] 10F_amp = (np.abs(F) / N )*2 11plt.plot(F_amp[:int(N/2)+1]) 12
下が実際のノイズ(スパイクが多い)データ。ピークがたくさんありどれを切っていいかよくわからない。
python
1f = np.array((df['lKnee_y'].diff())) 2# freq, N =3, 32 3# f = np.sin(freq * 2 * np.pi * (np.arange(N)/N)) 4 5f = f[~np.isnan(f)] 6plt.plot(f) 7# df.diff() 8# F = np.fft.fft(np.abs(f)) 9F = np.fft.fft((f)) 10N = F.shape[0] 11F_amp = (np.abs(F) / N )*2 12plt.plot(F_amp[:int(N/2)+1]) 13