先上例图~
函数介绍: numpy.convolve(a,v,mode =‘full’ )
参数说明:
a:(N,)一维数组
v:(M,)一维数组
mode:{‘full’, ‘valid’, ‘same’}可选
‘full’ 默认值,这将在每个重叠点返回卷积,输出形状为(N + M-1,)。在卷积的端点,信号没有完全重叠,并且可以看到边界效应。
‘same’ 返回的数组max(M, N),边界效果仍然可见。
‘valid’ 返回的数组max(M,N)-min(M,N)+1,卷积仅针对信号完全重叠的点给出,信号边界之外的值无效。
选用不同模式来处理边缘的差异如下图所示:
代码实现
def runavg(x, width):
#输入一原始时间序列和宽度,返回一个平滑以后的时间序列
n = len(x)
x = np.append(x, np.append(x, x))
x_smooth = np.convolve(x, np.ones(width)/width, mode='same')
xs = x_smooth[n:2*n]
return xs
祝大家科研顺利,身心健康!
有错误的地方欢迎指正~