2016-05-31 93 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)對於每一個板缺峯中,找到板缺段和信號之間的最大互相關係數中沒有峯,更換段並進行淡入/淡出效果以平滑粘貼。