Які проблеми при розробці фільтра FIR з використанням FFT?


15

Я намагаюся зрозуміти взаємозв'язок між фільтром FIR, розробленим на основі "перших принципів", використовуючи ядро ​​фільтра з згорткою, і фільтром, розробленим одним із двох способів за допомогою FFT (див. Нижче).

Наскільки я розумію, імпульсна характеристика фільтра FIR - це те саме, що і ядро ​​згортки фільтра. (Виправте мене, якщо я помиляюся.)

Крім того, на моє розуміння, частота компонентів (тобто перетворення Фур'є) імпульсної відповіді фільтра FIR - це те саме, що і частотна характеристика фільтра. І, отже, зворотне перетворення Фур'є поверне мені імпульсну відповідь. (Знову ж виправте мене, якщо я помиляюся).

Це призводить мене до двох висновків (ігнорування фазової реакції або припущення лінійної фазової реакції):

  1. Я повинен бути в змозі розробити фільтр FIR довільної частотної реакції, "намалювавши" потрібну частотну характеристику, взявши IFFT для отримання імпульсної відповіді та використовуючи це як моє ядро ​​згортки.

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

Інтуїтивно зрозуміло, що 1 і 2 рівноцінні, але я не впевнений, чи зміг би я це довести.

Здається, люди (і література DSP) намагаються створити FIR-ядра з попередньо визначеними відповідями, використовуючи такі складні (мені) алгоритми, як Чебишев чи Ремез (я викидаю деякі імена, які я прочитав, не розуміючи їх) .

  • Навіщо йти на ці довжини, коли для кожного можливого ядра FIR існує перетворення FFT / IFFT?
  • Чому б просто не намалювати точну частотну характеристику, яку ви хочете, взяти IFFT, і там є ваше ядро ​​FIR (метод 1 вище)?

Моя сфера інтересів - цифрова аудіо / цифрова музика, на випадок, коли це доречно.
брихойт

Відповіді:


13

Однією з причин, по якій ви бачите людей, які розробляють фільтри FIR, а не застосовують прямий підхід (як, наприклад, 1 і 2), - це те, що прямий підхід зазвичай не враховує періодичність в частотній області, а той факт, що згортка, реалізована за допомогою FFT, - це кругова згортка .

Що це означає?

х=[1,2,3,4]год=[1,1]

у=хгод[1,3,5,7,4][3,5,7,5]

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


Звичайно, але чому хтось тоді не міг просто переконатися, що розміри FFT / IFFT пропорційні довжині кінцевої згортки? Наприклад, довжина згортки становить N + M - 1, тому просто переконайтеся, що ви "намалювали" частотну характеристику в області фур'є, довжиною M-1. Чому б то не працювало? Цікаві речі btw. :)
TheGrapeBeyond

1
М-1

2
Частотна характеристика довжини М-1 все ще має нескінченну імпульсну характеристику довжини. Що означає, що коли ви IFFT отримуєте свій відфільтрований результат, хвіст імпульсної відповіді фільтра обернеться (у кілька разів) і розгорне ваш кінцевий результат часової області. Можливо, небагато. Можливо, багато.
hotpaw2

10

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

Інша проблема полягає в тому, що випадкова "намальована" частотна характеристика дуже часто має жахливу реакцію (дикі перебіги) між намальованими точками при будь-якому кінцевому дозволі. Перетворити на фільтр FIR, і він дзвонить як божевільний. Класичні прототипи фільтрів розроблені таким чином, щоб функціонувати частотні характеристики згладжування між точками вибірки.

Ваш (2) називається швидкою згорткою і зазвичай використовується, якщо FFT більше, ніж довжина вікна даних, плюс ядро ​​фільтра в поєднанні, і належне додавання / збереження перекриття використовується для подбання про початок / кінець кожного сегмента згортки або вікно (оскільки ЗПТ, як правило, блокують по довжині).


6

Re 1): Так, ви можете сконструювати фільтр FIR, "намалювавши" частотну характеристику (як за величиною, так і за фазою. Однак це, як правило, дуже неефективно: довжина імпульсної відповіді (і порядок фільтра) просто попередня -визначається вашою довжиною FFT Якщо ви вибрали 128-кратну FFT, ви отримаєте 128 відводів для імпульсного відгуку, а якщо вибрали 4096 точок FFT, ви отримаєте 4096 фільтрів-кранів.

Re 2): Так, ви можете фільтрувати шляхом множення в частотній області, і це дійсно єдиний спосіб зробити це ефективно для великих імпульсних відповідей. Однак, як зазначив Пітер К, множення в області частот відповідає круговій згортці. Найпоширенішим способом реалізації лінійної згортки є алгоритми "перекриття додавання" або "перекриття збереження" (легко гуглиться).


3

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

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

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

Наприклад, припустимо, що ви хочете розробити фільтр FIR з характеристиками, схожими на 10-полюсний IIR Bessel, але ви хочете трохи звузити перехідну смугу (за рахунок перекриття крокової відповіді). Тоді метод Фур'є робить цю проблему легкою для вирішення приблизно з 22 натисканнями, залежно від того, наскільки звужена смуга переходу.

Якщо ви хочете побачити, на що здатний метод Фур'є, спробуйте цю програму FIR http://www.iowahills.com/5FIRFiltersPage.html (безкоштовно). Наприклад, він може створювати еквіваленти IIR фільтрам Гаусса, Бесселя, Баттерворта та Інверсного Чебишева. Загалом, це дозволяє налаштувати реакцію фільтра майже на що завгодно, що є сильним моментом методу Фур'є. З нижньої сторони фільтри, ймовірно, не є оптимальними для певних вимог.


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

1

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

З повагою, Бул.

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