2016-05-31 50 views
1

例如,我有一个呼吸记录信号,带有大量尖峰打哈欠。我试图使用熊猫的滚动平均函数来删除它,但它没有帮助。此图上的绿色空间是使用滚动平均值的结果。从Python中删除信号中的尖峰

import pandas as pd 

RESP=pd.DataFrame(RESP) 
RESP_AV=pd.rolling_mean(RESP,50) 

我不知道很多有关筛选数据,我无法找到任何大熊猫其他方式消除这种尖峰,所以我的问题是在哪里寻找答案。 结果RESP.head()的是:

0 -2562.863389 
1 -2035.020403 
2 -2425.538355 
3 -2554.280563 
4 -2242.438367 
6.7636961937 

enter image description here

+0

你也许只需要增加窗口大小?看起来你有4个万个数据点,50可能是小,如果秒杀本身是由几个数据点? – Stefan

+0

这是什么问题?差异(绿色空间)?或者低通改变了你原来的信号太多了? – xvan

+0

@Stefan我试图增加窗口大小,甚至50000,但它只是破坏情节 – wiedzminYo

回答

0

我知道有两种方式来处理这个:

设计一个更好的过滤器:

1)确定您的信号频段:

比较您信号的频谱图与您的时间信号,比较e)确定最大有用频率(截止频率)和最小峰值表现(停止频率)。e)设置低通滤波器: 如果您有matlab,请使用fdatool,if要使用Python,使用remez

3)使用的,而不是滚动平均值的自定义低通滤波器,

,如果你不喜欢的结果,重新设计的过滤器(带重量和窗口的大小)

检测+替代:

1)删除信号的平均值。

2)使用微分滤波器和阈值来检测峰值。

3)切断所有的峰出信号的(由0的替换它们)

4)可选的过滤器的峰值出板缺段的(见上面的方法)

5)对于每一个板缺峰中,找到板缺段和信号之间的最大互相关系数中没有峰,更换段并进行淡入/淡出效果以平滑粘贴。