信号处理小记

去趋势:

scipy直接提供了一个去趋势函数,十分的方便。

scipy.signal.detrend(data, axis=-1, type='linear', bp=0, overwrite_data=False)
#data:输入数据,可以为任意维度
#axis,指定对哪一维度去趋势
#type,可设置为'linear'即为去线性趋势,设置为'constant',则为去平均值,即为求距平
#bp,断点,若设置,则为断点两侧分别去趋势,即将序列分成两个子序列各自计算
#overwrite_data,是否覆盖原数据

滤波:

滤波有很多滤波器,我这里只给出其中一种,仍是scipy.signal提供的Butterworth(巴特沃斯)滤波器。

scipy.signal.butter(N, Wn, btype='low')
#N: 滤波器阶数
#Wn:临界频率
#btype:滤波器类型,{‘lowpass’, ‘highpass’, ‘bandpass’, ‘bandstop’}分别为高通,低通,带通,带阻。

 

b, a = signal.butter(8, 0.2, 'lowpass')  
#b,a分别为分子和分母系数
scipy.signal.filtfilt(b, a, x, axis=-1)
#这时我们就用到了a和b
#X为要滤波的序列
#axis指定对哪一维滤波

滑动平均:

滑动平均是被卷积函数代替的。通过构造一个卷积核来实现权重滑动平均,在这一点上,它的用法是比NCL中的smooth函数更广泛的。

#首先构造一个等权重的卷积核,这个卷积核规定了滑动长度为9,每个点的权重是等权重的1/9
a = np.repeat(1/9, 9)
#卷积运算(滑动平均)
time_series_9 = np.convolve(time_series, a, mode='same')
#这里的mode是设置滑动后序列两端值的 参数有{‘full’, ‘valid’, ‘same’}
#‘full’ 默认值,返回每一个卷积值,长度是N+M-1,在卷积的边缘处,信号不重叠,存在边际效应,实际上是扩充了两端数值,通常不选这个选项。
#‘same’ 返回的数组长度为max(M, N),边际效应依旧存在。得到序列与原始序列长度一样。
#‘valid’  两端缺失,不自动补全

上一篇我讲的中值滤波。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值