嗨python愛好者!SciPy medfilt錯誤結果
我目前正在研究信號過濾,並決定使用SciPy。沒什麼特別的,只是日常工作的自動化。
所以,這裏是代碼
from scipy.signal import medfilt
print(medfilt([2,6,5,4,0,3,5,7,9,2,0,1], 5))
但問題是,返回sequense計算錯誤
SciPy: [ 2. 4. 4. 4. 4. 4. 5. 5. 5. 2. 1. 0.]
Me : [ 5. 4.5 4. 4. 4. 4. 5. 5. 5. 2. 1.5 1.]
這似乎是,該軟件包的開發搞砸了一個細節。當孔徑(以SciPy表示的內核)大於要分析的窗口時,還有另一個過濾規則。
例如kernel=5
[2, 6, 5]
的過濾子序列的中值爲5,而不是2,因爲SciPy計算的不是它嗎?同樣,如果的子序列[2,6,5,4]
中位數是5和4,我們需要在它們之間取平均值,所以中位數是4.5。
有人能解釋我誰在這種情況下得到了正確的結果嗎?
只是爲了擴大這個答案一點,那些尋找替代滾動平均的功能可以看看: 熊貓滾滾位數: http://pandas.pydata.org/pandas-docs/stable/computation.html# moving-rolling-statistics-moments and scipy.ndimage: http://docs.scipy.org/doc/scipy-0.15.1/reference/generated/scipy.ndimage.filters.median_filter.html – ConnectedSystems