Как объединить значения PSD, полученные из нескольких эпох, в одно общее значение, соответствующее PSD исходного сигнала в эти эпохи? - PullRequest
0 голосов
/ 07 мая 2020

Я хочу вычислить абсолютную спектральную плотность мощности (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-режиме сна?

...