python 中的 savitzky-Golay 过滤器,大小错误 window
savitzky-Golay filter in python, wrong window size
我有一个时间序列数据,我想使用 Savitzgy Golay 过滤器对其进行平滑处理。根据这里的研究:
https://arxiv.org/ftp/arxiv/papers/1808/1808.10489.pdf
Window 大小应为 n+2,其中 n -> 多阶。
我对我的数据进行了这种平滑处理,但我没有看到任何结果。我选错 window 尺码了吗?
我的数据是具有 (50858, 2)
形状的 EMG 信号,具有 t
和 emg
列,其中 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()
window 大小不限于 n+2
。不过,这一定很奇怪。我已经尝试使用 window_size=21
和 polyorder=3
并且它有效。
我认为您不太可能在数千个样本信号中看到 window 大小 = 5 的结果,因为您的噪声可能跨越更多样本。尝试使用更大的 window 尺寸。
我有一个时间序列数据,我想使用 Savitzgy Golay 过滤器对其进行平滑处理。根据这里的研究: https://arxiv.org/ftp/arxiv/papers/1808/1808.10489.pdf
Window 大小应为 n+2,其中 n -> 多阶。 我对我的数据进行了这种平滑处理,但我没有看到任何结果。我选错 window 尺码了吗?
我的数据是具有 (50858, 2)
形状的 EMG 信号,具有 t
和 emg
列,其中 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()
window 大小不限于 n+2
。不过,这一定很奇怪。我已经尝试使用 window_size=21
和 polyorder=3
并且它有效。
我认为您不太可能在数千个样本信号中看到 window 大小 = 5 的结果,因为您的噪声可能跨越更多样本。尝试使用更大的 window 尺寸。