我正在尝试从油位信号中去除尖峰噪声,为此,我想用python实现一个低通滤波器,我有信号的频域图,但我不知道如何选择截止频率或带通,以防我应该使用带通滤波器。我的数据采样频率是1sample/3min。下面是生成频域响应及其输出的代码。
#Fourier Transform of signal
fuel_vol_fft=np.fft.fft((fuel_vol-np.mean(fuel_vol)),axis=0) / fuel_vol.shape[0]
freq=np.fft.fftfreq(fuel_vol.shape[0],d=3) #sampling time step = 3 min- sampling rate 1/3 cycle/min
plt.figure(figsize=(20,7))
plt.plot(freq,fuel_vol_fft.real)
plt.grid()
plt.xlabel('Frequency (Hz)')
plt.ylabel('Amplitude')
plt.title('Frequency Domain Fuel Signal - Presuming regulary sampled')
plt.show()这是我的信号的频域视图:

频域特写:

最后,这是我的原始时域信号的一部分的特写,尖峰显示了噪声。

发布于 2019-12-17 17:12:45
我建议在这里使用移动平均滤波器。
它还具有低通效应,因为它基本上是通过将定义数量的值求和并将它们归一化为已处理的值的数量来集成离散输入信号:
https://en.wikipedia.org/wiki/Moving_average
它也很容易实现,它只是一个加权和,对于平滑信号来说,它是非常合适的。可能超过10或20个样本的移动平均值对您的应用程序来说应该很好。
https://stackoverflow.com/questions/59368806
复制相似问题