Високочастотний фільтр 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)

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

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

Будь-які пропозиції?


1
Тож проблема полягає лише в початковій реакції фільтра? Це заздалегідь записані дані, які ви можете просто додати нулями або це в реальному часі?
ендоліт

Підхід із низьким пропусканням та відніманням також постраждає від проблеми, яку ви бачите. Проблема полягає в тому, що кожен фільтр має затримку. Фільтри з різкими обрізами, як той, який ви хочете, можуть мати дуже тривалі затримки. Я не впевнений, чому ви зробили б наступне середнє видалення; коефіцієнт посилення постійного струму фільтра, який ви показали, дорівнює нулю, тому не буде помітного середнього значення для видалення (за винятком перехідного періоду на початку виходу через затримку фільтра).
Джейсон Р

Відповіді:


6

Ви запитуєте машину часу: щоб уникнути удару постійного струму при , вам потрібно знати стан фільтра так, ніби він працював до того, як запис починався. Це не відбудеться незалежно від того, який саме фільтр ви використовуєте.t=0

Ось хитрість, яка може стати вам у нагоді. Скажімо, у вас є фільтр-фільтр FIR (або фільтр IIR, імпульсна характеристика якого зменшується адекватно до 0 після проб). Візьміть перші зразків вашого сигналу, переверніть їх і додайте до початку сигналу. Насправді ми визначаємо новий сигнал для цілей фільтрації. Коли ви фільтруєте це, стан фільтра вже був "запрацьований" початковим сигналом: видаліть перші зразків виводу, і удар DC повинен сподіватися, що він пішов.N N g ( t ) = g ( - t ) = f ( t ) NNNNg(t)=g(t)=f(t)N

Потрібно сказати, що є багато проблем із такою схемою - для початківців це важче зробити для обробки в режимі реального часу, і якщо похідна сигналу висока при , у вас все ще виникнуть проблеми з довірою з першими кількома зразками. Але слід позбутися від шишки.t=0


6

Погляньте на функцію фільтрації. Це дає нульову фазу і ідеальну ступінчату реакцію. Особливо, властивість крокового реагування фільтрації filtfilt може вирішити вашу проблему.


0

Я зробив трюк, який містер rtollert пояснив, і вважав, що це найкраще, що я можу зробити.

Якщо ви спускаєтесь шляхом безперервного відбору проб / компенсації обладнання, то ефективність може зацікавити блокатори постійного струму, як описано Ренді Йейтсом та Річардом Ліоном у dsp Поради та рекомендації березня 2008 року



-1

Вас не хвилює абсолютна величина постійного струму, правда?

Чому б не просто додати статичні зрушення до своїх даних, щоб перша точка даних була нульовою?

Звичайно, вам доведеться додати зсув до кожної точки даних, але це повністю уникне великих проблем із кроковим реагуванням, які виникають у вас із фільтром.

Ефективно фільтр запускається ініціалізованим до нуля. Тому, коли ваші дані починаються, фільтр бачить великий сходинок від нуля до будь-якого рівня постійного струму у вас.

Просто додайте зміщення, щоб видалити сходи.


-1

Чому б не зробити середнє видалення? Пізніший крок, який робить це "знову", просто не має ефекту (було б відведення нуля).


Це більше запит, а не насправді відповідь на питання. Це могло бути доречним як коментар в один момент, хоча питання настільки давнє, що на цьому етапі просто здається безглуздим.
Сем Малоні
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.