Я студент информатики и делаю кое-что для профессора психологии.
У нас есть данные ЭЭГ из эксперимента, в котором человеку показывали 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 Гц? А также, это хороший способ вычислить корреляции между электродами?
Удаление шума может осуществляться различными способами:
Обычные фильтры . Вы можете создать цифровой фильтр нижних частот, такой как фильтр Чебышева или Баттерворта, с частотой среза 30 Гц ( функция filt или filtfilt в Matlab).
Фильтрация на основе БПФ : КИХ-фильтры удаляют частоты в частотной области. Таким образом, сначала выполняется преобразование Фурье, а затем из сигнала можно удалить частоты >30 Гц, просто присвоив «0» коэффициентам БПФ при частоте >30 Гц. Затем обратное БПФ возвращает ваш сигнал ( fftfilt в Matlab).
Вейвлет-преобразования : будучи относительно сложным и требовательным к вычислительной мощности методом, он может оказаться не тем методом, который вам нужен. Однако это может быть более эффективно при удалении определенных типов шума или извлечении определенных функций из сигнала ( функции cwt или dwt в Matlab).
Я не знаком с Питоном. Поиск соответствующих фильтров в Python должен быть довольно простым. Есть и другие процедуры фильтрации, но приведенные выше должны помочь вам в работе.
Корреляционный анализ может быть выполнен различными методами, включая корреляцию момента произведения Пирсона, корреляцию рангового порядка Спирмена , корреляцию рангового порядка Кендалла и взаимную информацию . См. Bonita et al., 2014, DOI: 10.1007/s11571-013-9267-8 .
Вычитание среднего сигнала из определенного канала в основном уменьшает смещение сигнала (сигнал постоянного тока), сравнимое с фильтром верхних частот с очень низкой частотой среза.
Общие шаги: - Необработанный сигнал (после предварительного усилителя и усиления) - Полосовой фильтр - Фильтр подавления полосы/Режекторный фильтр (отсечка зависит от того, где вы находитесь) - Фильтр сглаживания - Выборка/удержание - Мультиплексирование (если несколько каналов) - АЦП - Цифровой сигнал
как упоминал AliceD, вы можете использовать фильтры на основе БПФ и WT в качестве фильтра. Для WT вы в основном применяете его к сигналу (после выбора материнского вейвлета), и вы получаете ряд коэффициентов, представляющих различные частотные компоненты, которые затем можно вычесть из необработанного сигнала для удаления шумов.
Помимо этих фильтров, вы также можете использовать пространственные фильтры, наиболее распространенным из которых является CSP (общие пространственные шаблоны) или другие, такие как MEC, CCA, AC, CAR, ICA и т. д.
ачабача322
АлисаД
ачабача322
Джош де Леу
ачабача322
ежевика