Отфильтруйте сигнал ЭЭГ по определенной частоте

У меня есть данные ЭЭГ примерно для 15000 образцов. 512 выборок в секунду. Данные представлены в формате массива. Если я построю эти данные в Matlab, то у них будет выборка в секунду по оси x и амплитуда по оси Y. Я хочу извлечь из этих данных данные определенного частотного диапазона, скажем, от 8 Гц до 15 Гц. Как извлечь из сигнала конкретный частотный диапазон?

Заранее спасибо!


person saher    schedule 03.03.2017    source источник
comment
На этот вопрос просто нет ответа. Вы не объяснили, в каком формате находятся эти данные и как вы к ним обращаетесь. Четкий ответ (основанный на абсолютно не детальном вопросе, который вы задали): фильтровать данные, чтобы включить только интересующий вас диапазон. Нужны подробности? И мы тоже. Пожалуйста, потратьте немного времени на тур и прочтение справочного центра, особенно Как задать вопрос, прежде чем размещать здесь свой следующий вопрос.   -  person Ken White    schedule 03.03.2017


Ответы (1)


Во-первых, я бы НАСТОЯТЕЛЬНО РЕКОМЕНДУЕМ пройти через EEGLab ' s, Fieldtrip или некоторые другие руководства по инструментам ЭЭГ, прежде чем проводить какой-либо серьезный анализ. Просто брать частотную составляющую необработанного сигнала ЭЭГ бесполезно, если только набор не будет правильно предварительно обработан (повторная ссылка, удаление артефактов и т. Д.). Кроме того, изучение этих руководств предоставит контекст того, как вы на самом деле хотите управлять своим сигналом.

Например, фраза «извлечь данные определенного частотного диапазона», вероятно, искажает то, что вы на самом деле хотите получить из своих данных. Пройдя через одно из связанных руководств, вы увидите, какой анализ вы хотите выполнить, и предоставите вам доступные и расширенные инструменты для этого (то есть вам не придется приспосабливать общие функции MATLAB к данным ЭЭГ).

Если вы выполняете развлекательный / исследовательский анализ, я предоставил несколько примеров методов для управления / анализа сигнала ЭЭГ в частотной области.

Необработанный сигнал

Необработанные данные

Полосовой фильтр

В этом анализе вы в основном удаляете любые составляющие сигнала ниже низкочастотного порога и выше высокочастотного порога.

d = fdesign.bandpass(...) % set inputs that are appropriate to your data
myFilt = design(d,'butter');
new_data = filter(myFilt,data);

или eegfilt.m

Данные с полосовой фильтрацией

Оценки спектральной плотности мощности (PSD)

Интуитивно это показывает средний вклад определенного частотного диапазона в сигнал (т.е. если у нас есть чистая волна 10 Гц, у нас будет плоская линия с единственным пиком на 10 Гц). Это довольно хороший способ количественно оценить вклад сигнала в частотной области. Этот пост представляет собой отличное резюме / контекстуализацию того, как интерпретировать PSD в контекст нейронных данных.

pwelch(data);

PSD Уэлча

Частотно-временной спектр PSD

Подобно предыдущему анализу, но теперь мы смотрим на величину во временной И частотной области.

spectrogram(data);

или timefreq.m

 Time-freq

person Brendan Frick    schedule 06.03.2017