Я хочу вычислить абсолютную спектральную плотность мощности (PSD) сигнала ЭЭГ во время быстрого сна. Для этого я загрузил файл txt, в котором каждые 30 секунд ночной записи соответствуют стадии сна из S0, S1, S2, S3 и REM. Читая текстовый файл, я аннотировал исходную ЭЭГ. Из аннотаций я получил события, а затем эпохи. В частности, я получил 765 эпох:
- 99 эпох, соответствующих S0
- 84 эпох, соответствующих S1
- 302 эпох, соответствующих S2
- 122 эпохи, соответствующие S3
- 158 эпох, соответствующих REM
Чтобы вычислить PSD в режиме быстрого сна из канала O1, я сделал:
event_id={'REM': 5}
stages=sorted(event_id.keys())
psds, freqs = mne.time_frequency.psd_welch(epochs_train[stages], picks=['O1'], fmin=13.0, fmax=22.0)
В этом случае Я получаю трехмерный массив (n_epochs, n_channels, n_freqs), то есть (158, 1, 12), который я изменил, чтобы получить (158 * 1, 12) следующим образом:
psds= np.reshape(psds, (len(psds), psds.shape[1]*psds.shape[2]))
Итак, теперь я иметь 2D-массив, в котором для каждой эпохи (по строкам) есть PSD, выраженная в 12 частотах (по столбцам). Но эти результаты трудно использовать в матрице функций для машинного обучения, поэтому я хотел бы знать, есть ли способ объединить все PSD, вычисленные в каждую эпоху, в один результат формы (n_channel, n_freqs), в моем случае ( 1, 12), как если бы я использовал непосредственно сырую ЭЭГ. Например, могу ли я просуммировать все PSD за эпохи, чтобы получить одно значение PSD в REM-режиме сна?