Фильтрация данных ЭЭГ по Баттерворту в R

#r #filtering #spectrum #neuroscience #spectral

#r #фильтрация #спектр #нейронаука #спектральный

Вопрос:

Я очень новичок в R и передаче сигналов ЭЭГ, поэтому, пожалуйста, извините меня, если ответ на вопрос очевиден.

Я пытаюсь выполнить фильтр Баттерворта для сигнала ЭЭГ, чтобы извлечь альфа-диапазон. Когда я выполнил фильтр, результирующий сигнал выглядел очень странно и совсем не так, как я ожидал, с необычно большим пиком в начале временного интервала. Я попытался использовать eegfilter и bwfilter, чтобы посмотреть, была ли проблема с кодом, но при построении результатов между ними было очень мало различий. Я затрудняюсь объяснить конечный результат и был бы признателен, если бы кто-нибудь мог объяснить мне специфический конечный результат.

Вот пример из данных, которые я просматриваю:https://ufile.io/1ji48wg6

Частота дискретизации составляет 512.

Я хочу извлечь альфа-диапазон, поэтому частоты между 8 и 12 Гц

 library(eegkit)

mturk <- read.csv("EEG_alpha.csv", head = TRUE, sep= ",")

mturk.but <- eegfilter(mturk, Fs = 512, lower = 8, upper = 12, method = "butter", order = 4)

plot(mturk.but)

  

Вот изображение данных при построении графика. Самое левое изображение — это необработанные данные. Центральный график является результатом применения фильтра Баттерворта с использованием eegfilter. И правильный график является результатом применения фильтра Баттерворта с использованием bwfilter.

Графики данных при применении фильтров

Заголовок набора данных:

ЭЭГ

-8438.876837

-8442.718979

-8441.877183

-8439.974768

-8443.436883

-8448.900711

-8452.433874

-8441.616546

Комментарии:

1. Не могли бы вы, пожалуйста, указать заголовок и / или структуру набора данных?

2. Выполнено. Помогает ли это каким-либо образом?

Ответ №1:

Кажется, что функции eegfilter и bwfilter добавляют 0 перед данными перед применением фильтра и только затем нормализуют его. Таким образом, вы получаете что-то похожее на Дирака в начале данных после их обработки, что приводит к переходу отфильтрованных данных из исходного состояния:

ЭЭГ_рау

К этому, как только вы его отфильтруете:

ЭЭГ Баттерворта в филе

Однако, если вы нормализуете данные до 0; вычитая первое значение временного ряда из всех значений перед применением фильтра, артефакты, подобные Дираку, не возникают:

Нормализованная ЭЭГ с последующим использованием фильтра Баттерворта