Я пытаюсь создать фильтр высоких частот для электроэнцефалографических (ЭЭГ) наборов данных, чтобы избавиться от очень медленных дрейфов. Однако частоты около 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)
Однако этот фильтр вызывает смещение постоянного тока в начале данных, и я не хотел бы терять эти первые точки данных.
Я прочитал ваши страницы, что умная идея состоит в том, чтобы разработать фильтр нижних частот, который позже я бы вычел из реальных данных. Я сделал это с помощью равновеликого фильтра, и он работал, но оставил базовый лифт. Я не хочу запускать среднее удаление сейчас, так как это следующий шаг в протоколе анализа.
Какие-либо предложения?
Ответы:
источник
Посмотрите на функцию FilterFilt. Это дает нулевой фазовый отклик и идеальный шаговый отклик. В частности, свойство отклика на шаг фильтрации фильтрации может решить вашу проблему.
источник
Я сделал трюк, который объяснил мистер Ртоллерт, и подумал, что это лучшее, что я могу сделать.
Если вы пойдете по пути непрерывной выборки / аппаратной компенсации, то эффективность может заинтересовать вас блокировщиками постоянного тока, как это описано Рэнди Йейтсом и Ричардом Лайонсом в dsp Tips & Tricks, март 2008 г.
источник
Я попробовал то, что хорошо сработало - для указанного усилителя. код matlab находится здесь: https://sites.google.com/site/marialstavrinou/home/dc-offset-removal-filter-in-matlab .
источник
Вам не важно абсолютное значение постоянного тока, верно?
Почему бы просто не добавить статическое смещение к вашим данным, чтобы первая точка данных была на нуле?
Конечно, вам нужно было бы добавить смещение к каждой точке данных, но это полностью исключило бы большие проблемы с пошаговым откликом, которые возникают у вас с фильтром.
По сути, фильтр запускается инициализированным до нуля. Поэтому, когда ваши данные начинаются, фильтр видит большой шаг от нуля до любого уровня постоянного тока, который у вас есть.
Просто добавьте смещение, чтобы удалить ступеньку.
источник
Почему бы не сделать среднее удаление? Более поздний шаг, который делает это «снова», просто не имеет эффекта (это будет вычитание нуля).
источник