fai*_*e10 3 python signals signal-processing gaussian scipy
我想平滑时间序列数据。为此我想使用Python。
现在我已经找到了函数 scipy.ndimage.gaussian_filter1d。
为此,必须传递数组和西格玛值。
现在回答我的问题:
西格玛值等于滤波器长度吗?我想对数据运行长度为 365 的过滤器。那么将这个 sigma 值设置为 365 是否是正确的过程,或者我是否混淆了事情?
sigma定义高斯滤波器如何围绕其平均值分布。您可以创建具有特定大小的高斯滤波器,如下所示。
import numpy as np
import matplotlib.pyplot as plt
sigma1 = 3
sigma2 = 50
def gaussian_filter1d(size,sigma):
filter_range = np.linspace(-int(size/2),int(size/2),size)
gaussian_filter = [1 / (sigma * np.sqrt(2*np.pi)) * np.exp(-x**2/(2*sigma**2)) for x in filter_range]
return gaussian_filter
fig,ax = plt.subplots(1,2)
ax[0].plot(gaussian_filter1d(size=365,sigma=sigma1))
ax[0].set_title(f'sigma= {sigma1}')
ax[1].plot(gaussian_filter1d(size=365,sigma=sigma2))
ax[1].set_title(f'sigma= {sigma2}')
plt.show()
Run Code Online (Sandbox Code Playgroud)
sigma这是高斯滤波器的效果。
稍后,您可能会将信号与高斯滤波器进行卷积。