Чому я повинен занурювати сигнал, перш ніж перетворювати Фур'є?


77

У відповіді на попереднє запитання було зазначено, що слід

нульові колодки вхідних сигналів (додайте нулі до кінця, щоб принаймні половина хвилі була "порожньою")

У чому причина цього?


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

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

9
Ну це дуже загальне питання. Ви можете зробити нульовий майданчик, щоб зробити щось потужністю 2, ви можете нульову колодку, щоб кругова трансформація вела себе як нециркулярна трансформація, ви можете зробити це для перепрограми сигналу, зміни роздільної здатності частоти тощо.
endolith

Також пов’язано: dsp.stackexchange.com/questions/331/…
finnw

Відповіді:


82

Нульова накладка дозволяє використовувати більш довгий FFT, що створить довший вектор результату FFT.

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

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

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

Але, по суті, нульове прокладка перед DFT / FFT - це обчислювально ефективний метод інтерполяції великої кількості точок.

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


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

4
@Jason R: Насправді вони обидві кругові згортки. Звичайний (нерізаний) FFT робить все множення і додає для обгортання частину результату. Просто в тому, що в достатній кількості зафіксований нуль, всі ці множення та додавання мають значення нуля, тому ніхто не піклується про те, що обчислюється та обертається навколо кола.
hotpaw2

9
Дійсно; множення DFT на два сигнали завжди реалізує кругову згортку. Я мав би сказати це інакше: ви заповнюєте нулі в кінці одного сигналу, щоб переконатися, що результат, отриманий круговим згортанням їх, такий самий, як і результат, який ви отримуєте, якщо ви лінійно згортаєте їх (якщо вважати, що лінійна згортка - це те, що ви хочете, а це зазвичай так).
Джейсон R

27

Є кілька речей, які слід врахувати, перш ніж ви вирішите нульову панель сигналу часової області. Можливо, вам взагалі не знадобиться нульовий сигнал!

1) Збільшити дані часової області (не нульові прокладки), щоб отримати кращу роздільну здатність у частотній області.

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

fс/NfсN

На http://www.bitweenie.com/listings/fft-zero-padding/ є кілька приємних фігур, що ілюструють ці моменти.

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


8

Взагалі нульове прокладка до DFT еквівалентна інтерполяції або частіше вибірці в трансформованій області.

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

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

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


6

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

х(т)ш(т)ш(т)Х(f)W(f)

х(т)Х(f), ви побачите деякі зразки в інших місцях, крім пікового та нульового перетинів, виявляючи форму функції синхронізації в отриманому спектрі. То з чого використовувати нульові накладки? Це, звичайно, навчальне використання для виявлення природи дискретного перетворення віконних сигналів, що є звичайним випадком. У практичному сенсі це може бути корисно в будь-якому випадку, коли вас цікавить спектральна форма ізольованого конверта, що їде на хвилі-носії.


4

Причини цього можуть бути різними, залежно від будь-яких процесів, що здійснюються до і після перетворення Фур'є. Найбільш поширеною причиною є досягнення більшої роздільної здатності частоти в будь-якому результуючому перетворенні. Тобто, чим більша кількість зразків, використаних у вашій трансформації, тим вужча ширина біна в отриманому спектрі потужності. Пам'ятайте: binwidth = sample_frequency / transform_size (часто називається розміром вікна). Звідси ви можете уявити, що зі збільшенням розміру трансформації зменшується біншировина (= краща роздільна здатність). Нульова накладка - це спосіб збільшення розміру трансформації без введення нової інформації в сигнал.

То чому б просто не зробити більшу трансформацію без нульової прокладки? Чи не досягнуло б такого ж ефекту? Гарне питання. У багатьох випадках ви можете проаналізувати потік даних часової області, для яких ви можете використовувати короткий час перетворення Фур'є (stft). Це включає в себе перетворення кожного зразка N відповідно до потрібного часу, щоб охарактеризувати зміни в частотному спектрі. Тут криється проблема. Занадто велике вікно, і ви втратите дозвіл на час, занадто мале вікно, і ви втратите частотне дозвіл. Вирішенням цього рішення є прийняття невеликих вікон з часовою областю, що дає вам хороший дозвіл на час, а потім нульове колодки для отримання гарного частотного дозволу. Сподіваюсь, це вам корисно

Оновлення
Я не пояснив це добре. Я мав би це уточнити краще. Звертаючись до віконної трансформації, ви дійсно не отримуєте «фактичного» більшого частотного дозволу, але для цілей візуалізації (зчитування спектру потужності оком) це може дати чіткіші результати. Використовуючи критичну частоту вибірки, кожна бічна часточка займає один відро, який залежно від техніки графіку може ввести в оману. Нульова накладка забезпечує інтерпольований частотний спектр, який може бути більш показовим. Крім того, якщо ви використовуєте простий метод вибору піку для оцінки частоти, ефект спектральної інтерполяції нульового прокладки дасть вам спектральний зразок ближче до справжнього піку головної частки. Це посилання містить кілька корисних діаграм: http://www.dsprelated.com/dspbooks/sasp/Practical_Zero_Padding.html


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

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

1
@Jason R - Ви маєте рацію, моя відповідь була хибною, я спробував уточнити вище в оригінальній публікації. Я не повинен був заявляти, що нульове накладення збільшує роздільну здатність частоти.
Ден Баррі

2

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

Алгоритми Radix-2 є більш ефективними, тому нульова потужність перетворюється на наступну потужність 2 (або потужність 4 в деяких випадках для radix-4), або більш значне уникнення великих великих факторів може покращити продуктивність у режимі реального часу. Також при використанні FFT для аналізу часто робиться нульова прокладка для обчислення зразків DTFT, таких як визначення частотної характеристики FIR: порівняйте fft ([1 1 1 1]) з fft ([1 1 1 1], 512), який ідентичний freqz ([1 1 1 1]).

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