我使用 numpy 应用快速傅立叶变换将其转换为频域:(channelA 和 time 是 numpy 数组,channelA 存储电压值)
fY = np.fft.fft(channelA)
freq = np.fft.fftfreq(len(channelA), time[1]-time[0])
这是变换: 放大时: 我在 python 中使用 scipy 应用了一个巴特沃斯带通滤波器。这是代码:
low = 100 / (0.5 * 2e6) # nyq = 1/2 * fs
high = 1e3 / (0.5 * 2e6)
sos = sp.butter(1, [low, high], btype='bandpass', output='sos')
y = sp.sosfiltfilt(sos, channelA)
这里我的采样率为 2M (2e6),我的通带频率为 100-1kHz。应用滤波器后,信号似乎已经失去了噪声,但开始时的电压变为负值。我不懂为什么。有人可以解释为什么会这样吗? 放大以显示没有噪音:
当我应用高通滤波器时电压变为负值。如果我只应用低通滤波器,噪声就会被消除。(可以使用相同的功能应用高通和低通滤波器)
可以看出,小于 100Hz 的频率仍然存在,而 350Hz 左右的频率已被移除。我试图将注意力集中在 350-400Hz 左右的频率上,并希望在不扭曲信号的同时消除其余频率。为什么会发生这种情况,我应该怎么做才能做到这一点?
PS对不起,这篇文章有点长,但我没有另一种解释方式。