【问题标题】:savitzky-Golay filter in python, wrong window sizepython中的savitzky-Golay过滤器,错误的窗口大小
【发布时间】:2021-04-08 09:37:14
【问题描述】:

我有一个时间序列数据,我想使用 Savitzgy Golay 过滤器对其进行平滑处理。根据这里的研究: https://arxiv.org/ftp/arxiv/papers/1808/1808.10489.pdf

窗口大小应为 n+2 其中 n -> 多阶。 我对我的数据进行了这样的平滑处理,但我没有看到信号的结果。我是否选择了错误的窗口大小?

我的数据是 (50858, 2) 形状的 EMG 信号,具有 temg 列,其中 emg 是要降噪的值。这是它的头。

过滤器实现:

Y= data.iloc[:,1].values
Y_filtered= savgol_filter(Y, window_length = 5, polyorder = 3) 并绘制它:


plt.subplot(1, 2, 1)
plt.plot(Y[-1000:])
plt.title("EMG with noise")


plt.subplot(1, 2, 2)
plt.plot(Y_filtered[-1000:])
plt.title("SG filter applied ")
plt.tight_layout()
plt.show()

【问题讨论】:

  • 您尝试过更高的窗口尺寸吗?它看起来确实有影响,因为看起来高频噪音更小,你想达到什么目的?
  • 我的目标是用不同的方法去噪 emg 信号,其中之一是 SG,所以我问了。
  • 您认为噪音是什么? emg 包含很多可以被认为是有用或噪音的信息
  • 我不太清楚,因为这不是我的工程领域。据我所知,噪音可能是来自移动电线的不需要的信号,或者它的不稳定性或电极接触会使我的 EMG 产生噪音,我想将其移除。
  • 没有任何应用,决定窗口的大小实际上取决于视觉吸引力 - 或者您可以应用傅立叶并证明 EMG 域之外的频率已被抑制或频率因为 50Hz(或在美国/沙特为 60Hz)的电源噪声被抑制

标签: python numpy signal-processing


【解决方案1】:

窗口大小不限于n+2。不过,这一定很奇怪。我已经尝试过window_size=21polyorder=3 并且它有效。 我认为您不太可能在数千个样本信号中看到窗口大小 = 5 的结果,因为您的噪声可能跨越更多样本。试试看,使用更大的窗口尺寸。

【讨论】:

    猜你喜欢
    • 2016-08-27
    • 2017-01-29
    • 1970-01-01
    • 1970-01-01
    • 2021-08-16
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多