Pandas .rolling (). Медиана против Scipy.signal.medfilt () - PullRequest
0 голосов
/ 20 апреля 2020

Я применил Pandas.rolling().median(), и он имеет задержку или фазовый сдвиг (зеленая линия).

Если я использую Scipy.signal.medfilt(), результаты не смещено (желтая линия).

enter image description here

Почему результаты не совпадают?

PS I я пытался изучить реализацию medfilt , в которой используется sigtools._order_filterND, который, как я полагаю, отсутствует в python.

CODE:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import medfilt

x = np.zeros(100)
x[30:70] = 2
x+= .1 * np.random.randn(100)

y1 = medfilt(x, kernel_size=5)

plt.plot(x, '.-', label='original signal');
plt.plot(y1, '.-', alpha=.5, label='medfilt'); 
plt.plot(pd.Series(x).rolling(5).median(), label='rolling window');
plt.legend();

1 Ответ

1 голос
/ 20 апреля 2020

Вы пытались центрировать окно во время движения?

Pandas.rolling(center=True).median()
...