【问题标题】:Selecting frequency for Low Pass filter to filter noise from fuel signal选择低通滤波器的频率以滤除燃油信号中的噪声
【发布时间】:2020-04-09 15:15:18
【问题描述】:

我正在尝试从燃油液位信号中去除尖峰噪声,为此,我想在 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()

这是我的信号的频域视图:

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

【问题讨论】:

  • 您是否放大了幅度谱图以仔细查看并根据获得的信息选择截止频率?你为什么不尝试几个不同的频率,看看会发生什么/它有什么影响?为什么不用matlab的时候加个matlab标签?
  • 我有它,所以有人可能会建议一个 MATLAB 解决方案。其次,我正在尝试不同的频率,但我不确定哪个频率的总体效果更好。至于特写,我正在再次编辑问题以添加它。

标签: python-3.x matlab signal-processing lowpass-filter


【解决方案1】:

我建议在这里使用移动平均过滤器。

它还具有低通效应,因为它基本上是通过对定义数量的值求和并将它们归一化为已处理的值的数量来整合离散输入信号:

https://en.wikipedia.org/wiki/Moving_average

它也很容易实现,它只是一个加权和,对于平滑信号的原因,它非常适合。可能超过 10 或 20 个样本的移动平均值应该适合您的应用程序。

【讨论】:

  • 是的,我也试过了..它实际上给出了很好的结果谢谢。
  • 太好了,很高兴听到这个消息! :) 所以这是你的最终解决方案?
  • 不,我尝试了 Kaman 过滤器和 sinc 和 butterworth,并且所有的电池结果都一样,黄油 wroth 非常吸引人。
  • 啊,好吧!这些计算起来都比较耗时,所以如果时间很关键,移动平均线可能会再次有趣。但是,由于您的应用程序的采样频率约为 0.005 Hz,因此时间似乎并不重要 :)
  • 伟大的洞察力!!
猜你喜欢
  • 1970-01-01
  • 2020-09-16
  • 2021-02-05
  • 2018-03-05
  • 2013-08-22
  • 2020-07-30
  • 2019-02-03
  • 2011-10-26
  • 1970-01-01
相关资源
最近更新 更多