Фильтр верхних частот 0,01 Гц для медленных дрейфов ЭЭГ

10

Я пытаюсь создать фильтр высоких частот для электроэнцефалографических (ЭЭГ) наборов данных, чтобы избавиться от очень медленных дрейфов. Однако частоты около 0,3 Гц очень важны для исследования, которому служат эти данные.

Я использую Matlab и пробовал разные вещи. Кажется, что очень низкое затухание дБ, 3 дБ, хорошо для FIR-фильтров. Например, я использовал это:

h=fdesign.highpass('Fst,Fp,Ast,Ap',0.005,0.01,3,1,250); % i needed to cut 
d=design(h,'butter');
fvtool(d)

Однако этот фильтр вызывает смещение постоянного тока в начале данных, и я не хотел бы терять эти первые точки данных.

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

Какие-либо предложения?

forsker_for_dsp
источник
1
Таким образом, проблема только в первоначальном ответе фильтра? Это предварительно записанные данные, которые вы можете просто добавить с нулями или это в реальном времени?
эндолит
Подход нижнего прохода и вычитания также будет страдать от проблемы, которую вы видите. Проблема в том, что каждый фильтр имеет задержку. Фильтры с резкими срезами, такие как тот, который вы хотите, могут иметь очень длительные задержки. Я не уверен, почему вы будете делать среднее удаление дальше; коэффициент усиления постоянного тока фильтра, который вы показали, равен нулю, поэтому заметного среднего значения для удаления не будет (за исключением переходного периода в начале выхода из-за задержки фильтра).
Джейсон Р

Ответы:

6

Tзнак равно0

NNNг(T)знак равног(-T)знак равное(T)N образцы выходных данных, и удар постоянного тока, надо надеяться, исчезли.

Tзнак равно0

rtollert
источник
6

Посмотрите на функцию FilterFilt. Это дает нулевой фазовый отклик и идеальный шаговый отклик. В частности, свойство отклика на шаг фильтрации фильтрации может решить вашу проблему.

niaren
источник
0

Я сделал трюк, который объяснил мистер Ртоллерт, и подумал, что это лучшее, что я могу сделать.

Если вы пойдете по пути непрерывной выборки / аппаратной компенсации, то эффективность может заинтересовать вас блокировщиками постоянного тока, как это описано Рэнди Йейтсом и Ричардом Лайонсом в dsp Tips & Tricks, март 2008 г.

Чип Рэнглер
источник
-1

Вам не важно абсолютное значение постоянного тока, верно?

Почему бы просто не добавить статическое смещение к вашим данным, чтобы первая точка данных была на нуле?

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

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

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

Поддельное имя
источник
-1

Почему бы не сделать среднее удаление? Более поздний шаг, который делает это «снова», просто не имеет эффекта (это будет вычитание нуля).

ladkkasdöla
источник
Это скорее вопрос, а не ответ на вопрос. Возможно, в какой-то момент это было бы уместно в качестве комментария, хотя вопрос настолько старый, что на данном этапе он кажется бессмысленным.
Сэм Мэлони