Чому ми використовуємо вікно у часовій області, а не FFT змінюємо спектр, а не обернено FFT


16

Я подумав, що DSP буде зроблено за допомогою FFT частин сигналу, змінити зразки, що є результатом FFT (оскільки вони представляють спектр нашого сигналу + шум) і видалити будь-які небажані сигнали, а потім зробити зворотний FFT, щоб отримати час подання домену відфільтрованого сигналу (шум видалено зараз). Це, однак, не робиться, натомість ми виконуємо всю роботу у часовій області за допомогою віконних функцій. Чому?

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

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


Відповіді:


7

Вікна зменшують спектральний витік.

Скажіть, ви починаєте з . Період, очевидно, становить 2 π / ω 0 . гріх(у)=cos(ω0т)2π/ω0

Але якщо вам ніхто не сказав, що період дорівнює і ви сліпо вибираєте діапазон [ 0 , 1,8 π / ω 0 ] і приймаєте FFT цієї усіченої форми хвилі, ви будете спостерігати частотні компоненти в інших частотах, які всі підроблені, оскільки стрибки, створені при копіюванні, обклеєні усіченою формою хвилі для періодичності, насправді не є вихідним сигналом - це артефакт невдалого усікання, який не фіксує плавно перехід між періодами. В ідеалі є лише одна спектральна складова при ω = ω 0 . 2π/ω[0,1.8π/ω0]ω=ω0

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


12

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

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


11

Я думаю, що ви плутаєте дві різні операції.

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

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


У мене також таке враження, що згортання та віконце змішалися у питанні. Добре, що ти це вказав!
Дев

11

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

x=2*rand(1024,1)-1;
X=fft(x);
Y=X.*[ones(200,1);zeros(625,1);ones(199,1)]; % lowpass filter
y=real(ifft(Y)); % real() just to remove numerical errors
Y=fft(y,4096);
plot(20*log10(abs(Y(1:2048)))),axis([0,2048,-30,50])

6

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

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

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


5

Вікно у часовій області, оскільки

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

наприклад з Вікіпедії

введіть тут опис зображення

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

Якщо у вас є весь сигнал, вже іншою альтернативою буде використання вейвлетів


2

У мене було те саме питання.

Згортання - це інтегральна / сукупна сума сигналу часової області, помножена на вікно. Це не слід плутати з "віконним" сигналом часової області.

Кінець цієї статті мені дуже допоміг.

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

Щоб уникнути / мінімізувати ці артефакти, ви можете використовувати гладку (наприклад, дзвіночку) функцію вікна, щоб зразок починався і закінчувався нулем, а не різко закінчувався деяким ненульовим скалярним значенням.

Гладкий зріз

У віконному зразку вище буде менше артефактів у частотній області, ніж у сировинному зразку нижче.

Різкий зріз


1

Існують дві широкі категорії, пов'язані з FFT, і вони є 1) ефективним способом реалізації фільтра FIR та 2) Спектральним аналізом.

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

Спектральний аналіз - це місце, де можна використовувати Windows. Тут ви дивитесь на датчик, прикріплений до великої промислової машини, і намагаєтеся зрозуміти, чи не в глибині його надр підшипник виходить з ладу. Підшипники скриплять, коли вони виходять з ладу, але шум, який вони можуть, зазвичай набагато нижчий, ніж інші звуки, які видає машина. Тут виникають витоки та усереднення. Враховуючи сильні тони, витік буде витісняти слабкий сигнал, який ми шукаємо на кілька смітників. Це покращує чутливість спектрального аналізу до слабких сигналів за наявності сильних сигналів. Аналогічний ефект спостерігається і при похилому фоновому шумі. Інформація, яку ми шукаємо, знаходиться в частотній області. Це та сама проблема в RADAR, і SONAR, і в геофізиці. Бачити слабкий сигнал - це мета.


1

Вікно у часовій області потрібно, щоб уникнути, коли одна частота, яка не є точно на частотному відрізку, поширюється по всьому спектру. Можливо, ця сторінка допомагає: http://www.sm5bsz.com/slfft/slfft.htm Лінрад (мій 20-річний проект) використовує віконний FFT, після чого застосовує фільтр у частотній області (зробіть нуль того, чого ми не хочемо.) Застосуйте вікно - не переходьте різко від ваги 1 до ваги 0 на частотних біках. Потім застосувати зворотний FFT - але тепер на значно меншу кількість балів. Не потрібно включати всі частоти, які ми знаємо, нульові !! Як результат, ми отримуємо функцію часу зі значно меншим розміром - це означає зі значно меншою швидкістю вибірки. Процедура здійснює фільтрацію та децимацію в один крок. Це дуже ефективно, якщо хочеться фільтрувати кілька каналів одночасно. Домашня сторінка linrad знаходиться тут: http://www.sm5bsz.com/linuxdsp/linrad.htm

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