如何解决当去趋势或减去均值不起作用时,如何使用 numpy.fft.fft() 从 FFT 中去除零频率伪影
我正在尝试计算以下数据的 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 图:
我想去除零频率的伪影,我认为这是直流偏移。为此,我尝试从原始信号中减去平均值,并使用 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 伪影,而是一些低频频谱(可能在您的图中介于 2 到 10 Hz 之间,具体取决于您的尺寸)。试试高通滤波器。
此外,由于是复杂数据,请确保减去复杂平均值。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。