Hi python enthusiasts!SciPy medfilt risultato errato
Attualmente sto lavorando con il filtro dei segnali a scopo di ricerca e ho deciso di utilizzare SciPy. Niente di speciale, solo automazione del lavoro di routine.
Quindi, ecco il codice
from scipy.signal import medfilt
print(medfilt([2,6,5,4,0,3,5,7,9,2,0,1], 5))
Ma la questione è che sequense restituito viene calcolato sbagliato
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.]
Sembra essere, che gli sviluppatori di pacchetto incasinato un dettaglio. Quando apertura (il kernel in termini di SciPy) è maggiore della finestra da analizzare, c'è un'altra regola di filtraggio.
Ad esempio con kernel=5
sottosequenza filtrata di [2, 6, 5]
ha mediana 5 e non 2 come SciPy calcolato no? E allo stesso modo, se kernel=5
per le sottosequenze [2,6,5,4]
le mediane sono 5 e 4 dobbiamo prendere una media tra loro, quindi la mediana è 4,5.
Qualcuno può spiegarmi chi ha ottenuto il risultato giusto in questo caso?
Giusto per espandere un po 'su questa risposta, chi cerca funzioni mediana rotolamento alternativi può guardare in: Pandas mediana rotolamento: http://pandas.pydata.org/pandas-docs/stable/computation.html# moving-rolling-statistics-moments e scipy.ndimage: http://docs.scipy.org/doc/scipy-0.15.1/reference/generated/scipy.ndimage.filters.median_filter.html – ConnectedSystems