Как фильтровать шум в данных ЭЭГ

Я студент информатики и делаю кое-что для профессора психологии.

У нас есть данные ЭЭГ из эксперимента, в котором человеку показывали 140 изображений по 2 секунды каждое. Мы поместили 64 электрода на кожу головы, поэтому у нас есть 64 канала непрерывных данных.

Мы хотим соотнести каждый узел с каждым другим узлом, чтобы мы могли изобразить его с помощью хордовой диаграммы .

Поскольку мой профессор находится за границей, у меня возникли проблемы с указаниями, которые он дал мне, чтобы манипулировать данными для получения корреляций.

«Как только вы сможете прочитать матрицу каналов, я предлагаю вычесть средний сигнал из каждого, отфильтровать, чтобы удалить шум выше 30 Гц».

У меня вопрос, как убрать шум выше 30 Гц? Например, данные для 1 электрода за 10 миллисекунд выглядят так (измеряется в мкВ):

[ 31172.50, 31173.53, 31174.80, 31177.34, 31173.73,
  31172.85, 31172.75, 31172.70, 31174.95, 31178.95]

Сценарий Python, который я использую, также дает эти данные:

sampling rate: 1000.0 Hz
time: 0.0 s to 1883.15 s

Может ли кто-нибудь указать мне в правильном направлении, какие шаги предпринять, чтобы удалить шум выше 30 Гц? А также, это хороший способ вычислить корреляции между электродами?

Ответы (2)

Удаление шума может осуществляться различными способами:

Обычные фильтры . Вы можете создать цифровой фильтр нижних частот, такой как фильтр Чебышева или Баттерворта, с частотой среза 30 Гц ( функция filt или filtfilt в Matlab).

Фильтрация на основе БПФ : КИХ-фильтры удаляют частоты в частотной области. Таким образом, сначала выполняется преобразование Фурье, а затем из сигнала можно удалить частоты >30 Гц, просто присвоив «0» коэффициентам БПФ при частоте >30 Гц. Затем обратное БПФ возвращает ваш сигнал ( fftfilt в Matlab).

Вейвлет-преобразования : будучи относительно сложным и требовательным к вычислительной мощности методом, он может оказаться не тем методом, который вам нужен. Однако это может быть более эффективно при удалении определенных типов шума или извлечении определенных функций из сигнала ( функции cwt или dwt в Matlab).

Я не знаком с Питоном. Поиск соответствующих фильтров в Python должен быть довольно простым. Есть и другие процедуры фильтрации, но приведенные выше должны помочь вам в работе.

Корреляционный анализ может быть выполнен различными методами, включая корреляцию момента произведения Пирсона, корреляцию рангового порядка Спирмена , корреляцию рангового порядка Кендалла и взаимную информацию . См. Bonita et al., 2014, DOI: 10.1007/s11571-013-9267-8 .

Вычитание среднего сигнала из определенного канала в основном уменьшает смещение сигнала (сигнал постоянного тока), сравнимое с фильтром верхних частот с очень низкой частотой среза.

Для расчета корреляций я не понимаю, почему я должен «вычитать средний сигнал из каждого», не могу ли я просто сопоставить данные после фильтрации шума?
Я не знаю, что означает «средний сигнал»: среднее значение различных постстимульных ЭЭГ? Или среднее по разным каналам? В вашем вопросе недостаточно информации, чтобы ответить на него.
Да, это все, что дал мне профессор, как только я свяжусь с ним и он объяснит эту часть, я вернусь, чтобы опубликовать это здесь. Вероятно, на следующей неделе. Спасибо
Нередко находят среднее значение канала по всей записи, а затем вычитают его.
Мне удалось, наконец, поговорить с профессором, он сказал в моем случае: Поскольку у нас 64 электрода, нам нужно получить 64 средних сигнала. Затем, например, я буду вычитать средний сигнал для электрода 1 из сигнала для каждой отметки времени на электроде 1. И делать это для каждого. Я опубликую окончательные результаты нашей диаграммы аккордов здесь, когда закончу.
Фильтры с конечной импульсной характеристикой, основанные на преобразовании Фурье, представляют собой лишь один класс КИХ-фильтров. Фильтры сложны, искажают ваш сигнал и часто плохо понимаются. Я бы посоветовал прочитать главу Стива Лакса о фильтрах, прежде чем продолжить. Самым простым КИХ-фильтром (который также очень легко понять) для удаления линейного шума 50/60 Гц (если это будет вашей целью) будет фильтр с коробкой передач.

Общие шаги: - Необработанный сигнал (после предварительного усилителя и усиления) - Полосовой фильтр - Фильтр подавления полосы/Режекторный фильтр (отсечка зависит от того, где вы находитесь) - Фильтр сглаживания - Выборка/удержание - Мультиплексирование (если несколько каналов) - АЦП - Цифровой сигнал

как упоминал AliceD, вы можете использовать фильтры на основе БПФ и WT в качестве фильтра. Для WT вы в основном применяете его к сигналу (после выбора материнского вейвлета), и вы получаете ряд коэффициентов, представляющих различные частотные компоненты, которые затем можно вычесть из необработанного сигнала для удаления шумов.

Помимо этих фильтров, вы также можете использовать пространственные фильтры, наиболее распространенным из которых является CSP (общие пространственные шаблоны) или другие, такие как MEC, CCA, AC, CAR, ICA и т. д.