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


15

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

Мене навчали використовувати butter(для розробки фільтра Баттерворта, який називається фільтром максимальної плоскої величини) та filtfilt(Нульова фазова цифрова фільтрація) для смугової фільтрації сигналів ЕЕГ (електроенцефалограма) в режимі офлайн (тобто після завершення запису). Таким чином ви зможете уникнути неминучої «затримки», спричиненої цифровим фільтром (тобто нульовою фазовою фільтрацією).

Потім хтось запитав мене, чому ми не можемо використовувати fft(Швидке перетворення Фур'є), щоб представити сигнал частотного домену, а потім встановити потужність небажаних частот на нуль, а потім ifft(зворотна швидка трансформація Фур'є), щоб вчасно відновити відфільтровані дані. домен з тією ж метою. Ця маніпуляція в частотній області для мене звучала простіше і розумніше, і я не могла реально відповісти, чому.

Які переваги та недоліки використання простого fft/ifftметоду смугової фільтрації? Чому люди вважають за краще використовувати цифрові фільтри FIR або IIR?

Наприклад, чи fft/ifftбільш схильний метод до спектральних витоків або пульсацій порівняно із встановленими цифровими фільтрами? Чи страждає також метод затримки фаз? Чи існує спосіб візуалізації імпульсної відповіді для цього методу фільтрації для порівняння?


Пов'язане (але не обов’язково повторне) питання: electronics.stackexchange.com/questions/100348/why-use-a-filter/…
helloworld922

Використання FFT для фільтрації сигналу абсолютно вірно, але є кілька речей, на які слід звернути увагу. Дивіться цей подібне питання / відповідь для отримання додаткової інформації: stackoverflow.com/a/2949227/565542
sbell

5
Такі питання можуть бути більш підходящими для сайту обробки сигналів .
Джейсон Р

2
Я думаю, що керівництво вченого та інженера з цифрової обробки сигналів Стівена В. Сміта має відповідь. Я думаю, що він каже, що вибірки з вибірки набагато ефективніші з цифровим фільтром. Але, є мінімальна ширина вікна (64 зразки і більше, я точно не пам’ятаю), коли доцільніше викликати перетворення FFT, де у домені freq можна встановити цегляний фільтр. Ефективність - не єдине питання. Цегляний фільтр передбачає, що потрібно використовувати зразки з майбутнього, що неможливо в реальному часі.
Вал

Дякую, я шукав щось на зразок сайту обробки сигналів, але не зміг його знайти.
Kouichi C. Nakamura

Відповіді:


9

Основною причиною того, що обробка частотної області не здійснюється безпосередньо, є затримка. Для того, щоб зробити, скажімо, FFT на сигнал, вам потрібно спочатку записати весь сигнал часової області, починаючи з кінця, перш ніж перетворити його на частотну область. Тоді ви можете виконати обробку, перетворити її у часовий домен та відтворити результат. Навіть якщо два перетворення та обробка сигналу в середині фактично миттєві, ви не отримаєте перший зразок результату, поки не буде записано останній вхідний зразок. Але ви можете отримати "ідеальні" результати частотної області, якщо ви готові миритися з цим. Наприклад, 3-хвилинна пісня, записана зі швидкістю 44100 зразків / секунду, вимагатиме від вас 8 мільйонів точкових перетворень, але це не є великою справою для сучасного процесора.

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

Це відбувається через припущення, які є неявними в процесі, який перетворює між часовою і частотною областями (і навпаки). Наприклад, FFT та IFFT "припускають", що дані є циклічними; іншими словами, блоки однакових даних часової області надходять до і після блоку, який обробляються. Оскільки це взагалі не вірно, ви отримуєте артефакти.

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

(Це розширена версія моєї попередньої відповіді .)


1
Велике спасибі за детальну відповідь простими словами. Тепер я бачу, що в своєму запитанні я повинен був зазначити, що моя робота полягає в основному в офлайн-аналізі, а не в онлайні чи в режимі реального часу. Я відредагую питання. Ваша думка цілком зрозуміла: оскільки FFT вимагає всієї тривалості даних, вам доведеться почекати, поки запис не завершиться.
Kouichi C. Nakamura

1
Добре, досить справедливо. Дозвольте лише зазначити ще одне, що стосується фільтрації частотних домен, яка може бути, а може і не бути проблемою для вас: Фільтри не будуть причинними у часовій області. Іншими словами, їх імпульсні реакції поширюються як на позитивний, так і на негативний час. Це може мати дивовижні наслідки, якщо ви цього не знаєте.
Трейд Дейва

Спасибі. Я подивився на "Причинний фільтр" у Вікіпедії. За визначенням, фургон FFT не хвилює час, тому я можу бачити, що це безпричинно. Цей характер пояснює, чому ви не можете використовувати його для фільтрації в режимі реального часу.
Kouichi C. Nakamura

3
@DaveTweed: Ваше твердження про необхідність 8-мільйонного FFT для фільтра 3-хвилинної пісні, відібраної на 44,1 кГц, є невірним. Алгоритми згортки на основі FFT фактично широко застосовуються на практиці. Використовуються такі методи, як перекриття-збереження та перекриття-додавання , щоб вимагати більш скромних розмірів FFT (і, отже, затримки обробки). Ці методи виконують саме те, що пропонує другий абзац: використовуйте менші блоки під час обробки "крайових ефектів", що виникають між ними.
Джейсон Р

2
@DaveTweed: Я не згоден. Швидкі методи згортання, такі як перекриття-збереження та перекриття-додавання, еквівалентні (до числової точності) прямим лінійним згортанням (тобто впровадженню фільтра у часовій області). Немає компромісів щодо продуктивності в будь-яких обмежених умовах та обробці часових доменів, і їх обмежена затримка все ще робить їх корисними для багатьох програм у режимі реального часу. Я стверджую, що твердження про те, що для фільтрації частотних домен потрібен один великий FFT по всьому вхідному сигналу, є неправдивим, і я не впевнений, що ви маєте на увазі під "чистою" обробкою частотного домену в цьому контексті.
Jason R

2

Ви, звичайно, можете використовувати ідеальні фільтри «boxcar» у частотній області. Подвійність говорить, що це рівносильно згортанню з функцією sinc нескінченної довжини. Щоб зменшити артефакти, пов'язані з обмеженням довжини, функцію sinc часто множать на вікно. Можливо, ви чули про Хеммінга, Ханнінга (насправді фон Ханна), піднятого косинусу та інших прийомів вікон. Згодження може бути обчислювально простішим, ніж fft / ifft aproach, але відповіді такі ж.

У кожного методу будуть плюси і мінуси. Баттерворт - IIR, а коробки - FIR. Баттервортс, ймовірно, плавніший у прохідній смузі, але, ймовірно, із менш крутим перекидом, залежно від порядку IIR та ширини FIR. filtfilt було б важче реалізувати в режимі реального часу.


1
Для дійсно чіткого пояснення вікон та фільтрування блоків, дивіться книгу " Цифрові фільтри" від RW Hamming. Доступний від Dover, так що це дуже приємно. (Між іншим, Скотт, я думаю, що це саме ім'я Хеммінга, за яким названо вікно, і фон Ханн - той, хто отримав своє ім'я, порізаний іменем свого вікна)
The Photon

Крім того, я впевнений, що боксер, реалізований з FFT, за визначенням ідеально рівний в смузі пропуску. Коли ми кажемо, що фільтр Баттерворта "максимально плоский", я вважаю, що ми говоримо про це лише в контексті причинних фільтрів (а Вікі каже, що навіть так можна зробити зворотний фільтр Чебічева, який є більш плоским, ніж Баттерворт).
The Photon

1
Домовились про ідеальну нескінченну довжину, але не настільки впевнені після усічення та вікон
Скотт Сейдман

@ThePhoton Дякую за корекцію Хеммінга / фон Ханна. Не вдалося візуально уявити мою книжкову полицю з дому.
Скотт Сейдман

@ Фотон; Дякуємо за книгу " Цифрові фільтри" Хеммінга . Я подивився на це і, здавалося, написано спеціально для початкових учнів. Я купив його з надією. :)
Kouichi C. Nakamura

0

Пов'язані питання

Чому це погана ідея фільтрувати, обнуляючи нутрощі FFT? /signals/6220/why-is-it-a-bad-idea-to-filter-by-zeroing-out-fft-bins

Видалення значень з результату FFT те саме, що і фільтрація? /signals/11487/removing-values-from-fft-result-same-as-filtering?noredirect=1&lq=1

Чому ми використовуємо вікно у часовій області, а не FFT змінюємо спектр, а не зворотний FFT /signals/8911/why-do-we-use-window-in-time-domain-rather -than-do-fft-modify-the-range-and-t? noredirect = 1 & lq = 1

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