[英]How to remove a zero frequency artefact from FFT using numpy.fft.fft() when detrending or subtracting the mean does not work
我正在嘗試計算以下數據的 FFT: data.txt
y_array = np.loadtxt('data.txt',dtype='complex')
plt.plot(np.real(y_array))
y_array_fft = np.fft.fftshift(np.fft.fft(y_array))
x_array = np.linspace(-125,125,len(y_array))
FFT plot:
我想去除零頻率的偽影,我認為這是直流偏移。 為此,我嘗試從原始信號中減去平均值,並使用 scipy.signal.detrend() 從 fft 之前的數據中刪除線性趨勢。 但是,這兩種操作似乎對 FFT 沒有任何影響。
y_array_detrend = signal.detrend(y_array)
y_array_mean_subtracted = y_array-np.mean(y_array)
y_array_detrend_fft = np.fft.fftshift(np.fft.fft(y_array_detrend))
y_array_mean_subtracted_fft = np.fft.fftshift(np.fft.fft(y_array_mean_subtracted))
使用 scipy.detrend() 轉換數據后的 FFT:
從數據中減去平均值后的 FFT:
非常感謝任何幫助或意見!
如果減去平均值,那么剩下的不是 0 Hz 偽影,而是一些低頻頻譜(plot 中的頻率可能在 2 到 10 Hz 之間,具體取決於您的尺寸)。 試試高通濾波器。
此外,由於它是復雜數據,請確保減去了復雜平均值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.