1
我遇到了麻煩頻譜出傅里葉變換
...我有一些數據: FFT功率譜愁楚
,我平均爲中心,並且似乎並不有太多多的趨勢...
我繪製傅里葉變換它:
而我得到的東西,是不是很好....
這裏是我的代碼:
def fourier_spectrum(X, sample_freq=1):
ps = np.abs(np.fft.fft(X))**2
freqs = np.fft.fftfreq(X.size, sample_freq)
idx = np.argsort(freqs)
plt.plot(freqs[idx], ps[idx])
由於從here採取代碼調整。
這似乎對一些幼稚的正弦波數據的工作:
fourier_spectrum(np.sin(2*np.pi*np.linspace(-10,10,400)), 20./400)
所以我的問題是:我期待一個非零幾乎隨處可見光譜,我是什麼做錯了?如果我沒有做錯什麼,我的數據的哪些特徵導致了這種情況?另外,如果我沒有做錯任何事情,並且由於某些原因,fft僅僅不適合我的數據,那麼我應該如何從我的數據中提取重要頻率?
只是不要繪製fft的0 bin,如果有太多「DC」組件。同樣通過眼球,數據看起來在非常低的頻率上有很強的頻率分量 - 通過查看前50個分檔可能看起來更「合理」 – f5r5e5d
在FFT之前減去信號的平均值 - 在「DC 「(即,FFT的倉位0)。另外/替代地,繪製FFT輸出的「log10(abs(...))」(即dB或分貝)以更好地理解發生了什麼。 –
另請參見統計譜估計器,例如[periodogram](https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.periodogram.html)和'scipy.signal'中的相關方法。 –