python - python中的savitzky-Golay过滤器,错误的窗口大小
问题描述
我有一个时间序列数据,我想使用 Savitzgy Golay 过滤器进行平滑处理。根据这里的研究: https ://arxiv.org/ftp/arxiv/papers/1808/1808.10489.pdf
窗口大小应为 n+2,其中 n -> 多阶。我对我的数据进行了这样的平滑处理,但我没有看到信号的结果。我选择了错误的窗口大小吗?
(50858, 2)
我的数据是具有形状t
和列的 EMG 信号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()
解决方案
窗口大小不限于n+2
. 不过,这一定很奇怪。我已经尝试过window_size=21
并且polyorder=3
它有效。我认为您不太可能在数千个样本信号中看到窗口大小 = 5 的结果,因为您的噪声可能跨越更多样本。试一试并使用更大的窗口大小。
推荐阅读
- android - 将资产中的 index.html 加载到 WebView 中,但找不到 index.html 中引用的其他文件
- javascript - try-catch 块是使用“in”运算符的可靠方法吗?
- c# - 瀑布对话框中的 C# bot V4 文本提示
- django - 我如何存储锦标赛排名
- javascript - 第二次单击按钮没有获得新的表单字段值
- javascript - 从 HTML 中清理/去除 Javascript
- python - 如何在python中获得两个平坦信号的精确相关因子?
- c - 如何设置多个指针?
- django - Django ModelForm - 以有效的形式访问自定义字段
- python - 我想在表中使用 python 在 spark 中添加某个 url 链接作为新列