nn_intervals_sec = df_f['rr_intervals']/1000
Создание временного ряда для интерполяции
time = np.cumsum(nn_intervals_sec)
Убедитесь, что время имеет стандартный числовой индекс
time = pd.Series(time.values, index=np.arange(len(time))) # Сброс индекса
Передискретизация до фиксированной частоты (например, 64 Гц)
resampled_time = np.arange(0, time.iloc[-1], 1/8) # Доступ к последнему элементу с помощью iloc
resampled_nn = np.interp(resampled_time, time.index, time.values) # Использовать индекс и значения
Метод Уэлча для спектральной плотности мощности (PSD)
freqs, psd = welch(resampled_nn, fs=8, nperseg=128)
Определение полос частот
lf_band = (0,04, 0,15)
hf_band = (0,15, 0,4)`
Код: Выделить всё
window_size = 5Код: Выделить всё
df['lf_power'] = df['rr_intervals'].rolling(window=window_size).apply(lambda x: np.trapz(psd[(freqs >= lf_band[0]) & (freqs = lf_band[0]) & (freqs = hf_band[0]) & (freqs = hf_band[0]) & (freqs
Подробнее здесь: [url]https://stackoverflow.com/questions/79366850/feature-extract-from-rr-intervals-to-lf-power-hf-power-and-lf-hf-ratio-using-p[/url]
Мобильная версия