簡體   English   中英

當去趨勢或減去均值不起作用時,如何使用 numpy.fft.fft() 從 FFT 中刪除零頻率偽影

[英]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_after_detrend

從數據中減去平均值后的 FFT:

均值減法后的 FFT

非常感謝任何幫助或意見!

如果減去平均值,那么剩下的不是 0 Hz 偽影,而是一些低頻頻譜(plot 中的頻率可能在 2 到 10 Hz 之間,具體取決於您的尺寸)。 試試高通濾波器。

此外,由於它是復雜數據,請確保減去了復雜平均值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM