Чому величини нормалізуються під час синтезу (IDFT), а не аналізу (DFT)?


17

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

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

Натомість більшість алгоритмів ділиться на N при повторному синтезі.

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

У кожному сценарії, про який я мрію, фактична величина (а не величина * N) - це значення, яке мені потрібно для операції DFT, а нормована величина - це значення, яке я хочу ввести в операцію IDFT.

Чому DFT не визначається як DFT / N, а IDFT не визначається як проста сума синусоїд нормованої величини?


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

Відповіді:


9

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

Потрібно масштабувати перехід вперед на 1 / N.

Для початку слід зрозуміти, що для аналізу простої синусоїди довжина перетворення повинна бути невідповідною, математично кажучи. Припустимо, N = 1024, Freq = 100, і ваш сигнал:

f (n) = cos (Freq * 2 * Pi * n / N)

Якщо ви візьмете 1024 точок DFT з f (n), ви знайдете цей бін [100] = 512. Але це не є значущим значенням, поки ви не масштабуєте його за N. 512/1024 = 1/2, і звичайно, інші 1/2 знаходяться в негативному спектрі у бункері [924].

Якщо подвоїти довжину DFT, N = 2048, вихідні значення будуть вдвічі вищими за 1024 точок DFT, що знову ж таки робить безглузді результати, якщо ми не масштабуємо на 1 / N. Тривалість DFT не повинна бути фактором для подібного роду аналізів. Тож у цьому прикладі потрібно масштабувати масштаб DFT на 1 / N.

Не повинно масштабувати прямої трансформації.

Тепер припустимо, що у вас є імпульсна характеристика фільтра FIR на 32 крана і хочете знати його частотну характеристику. Для зручності ми припустимо фільтр низьких частот з коефіцієнтом посилення 1. Ми знаємо, що для цього фільтра DC компонент DFT повинен бути 1. І повинно бути зрозуміло, що це буде так, незалежно від розміру DFT, оскільки компонент постійного струму - це просто сума вхідних значень (тобто сума коефіцієнтів FIR).

Таким чином, для цього введення DFT не масштабується на 1 / N, щоб отримати змістовну відповідь. Ось чому ви можете занулювати імпульсну відповідь на скільки завгодно, не впливаючи на результат перетворення.

У чому полягає принципова відмінність цих двох прикладів?

Відповідь проста. У першому випадку ми постачали енергію для кожного вхідного зразка. Іншими словами, синусоїда була присутня для всіх 1024 зразків, тому нам потрібно було масштабувати вихід DFT на 1/1024.

У другому прикладі, за визначенням, ми постачали енергію лише для 1 вибірки (імпульс при n = 0). Для імпульсу було потрібно 32 зразки, щоб пробити свій шлях через 32-кратний фільтр, але ця затримка не має значення. Оскільки ми постачали енергію для 1 зразка, ми масштабуємо вихід DFT на 1. Якщо імпульс визначався з 2 одиницями енергії замість 1, ми би масштабували вихід на 1/2.

Не повинно масштабувати зворотне перетворення.

Тепер розглянемо зворотний DFT. Як і у випадку з прямим DFT, ми повинні враховувати кількість проб, яким ми постачаємо енергію. Звичайно, ми повинні бути дещо обережнішими, тому що ми повинні заповнити як позитивні, так і негативні частоти. Однак якщо ми розмістимо імпульс (тобто 1) у двох відповідних бінах, то отриманим результатом зворотного DFT буде косинусова хвиля з амплітудою 2 незалежно від того, скільки точок ми будемо використовувати у зворотному DFT.

Таким чином, як і у прямому DFT, ми не масштабуємо зворотний вихід DFT, якщо вхід є імпульсом.

Потрібно масштабувати обернене перетворення.

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

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

Припустимо, у нас є наступний сигнал з N = 1024, Freq = 100:

f(n) = 6 * cos(1*Freq * 2*Pi * n/N)  n = 0 - 127
f(n) = 1 * cos(2*Freq * 2*Pi * n/N)  n = 128 - 895
f(n) = 6 * cos(4*Freq * 2*Pi * n/N)  n = 896 - 1023

Домен часу

Зауважте різниці амплітуди, частоти та тривалості для трьох компонентів. На жаль, DFT цього сигналу покаже всі три компоненти на одному рівні потужності, навіть якщо 2-й компонент має 1/36 рівня потужності інших двох.

Недоступний домен Freq

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

Якщо ми знаємо тривалість для різних частотних компонентів, то можемо відповідно масштабувати різні частотні відрізки. У цьому випадку ми зробимо це, щоб точно масштабувати вихід DFT: bin [100] / = 128; бін [200] / = 768; бін [400] / = 128;

Що підводить мене до моєї остаточної точки; загалом, ми не маємо уявлення про те, як довго певний частотний компонент присутній на вході в наш DFT, тому ми не можемо зробити такий тип масштабування. Однак, як правило, ми постачаємо енергію для кожної точки вибірки, тому нам слід аналізувати прямий DFT на 1 / N під час аналізу сигналу.

Для ускладнення питань ми майже напевно застосуємо вікно до цього сигналу для поліпшення спектральної роздільної здатності DFT. Оскільки перша і третя частотні компоненти знаходяться на початку та в кінці сигналу, вони ослаблені на 27 дБ, тоді як центральний компонент ослаблений лише 4 дБ (вікно Ханнінга).

Віконний спектр

Щоб було зрозуміло, вихід DFT може бути досить поганим представленням вхідних даних, масштабованих чи ні.

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

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

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


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

9

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

Ось мій погляд на це. Давайте концептуально подумаємо про те, що означає DFT у сенсі обробки сигналу, а не просто як перетворення. У цьому випадку мені здається, що застосування DFT до сигналу та до системи змушує бачити різні результати.

Наприклад, застосуємо DFT до постійного сигналу значення 1. Припустимо також, що цей сигнал має кінцеву довжину і становить 16 тапів. Що ми хочемо від DFT в цьому випадку? Очевидно, ми хочемо, щоб він сказав нам, яку амплітуду має кожна частотна складова сигналу. Зрозуміло, що у нашого сигналу є одна складова частоти 0 та амплітуди 1. Але DFT дає нам один пік у біні 0 та висоті 16! У цьому випадку ваше розчарування визначенням DFT має ідеальний сенс. Ми повинні масштабувати коефіцієнти аналізу, а не коефіцієнти синтезу.

Гаразд, зараз давайте проаналізуємо той самий масив чисел, а саме наш рядок з 16, але в цьому випадку як система. Що ми концептуально хочемо, щоб означає частотний відгук системи? Більшість людей скажуть, що це амплітуда виходу порівняно з вхідною, тобто функцією передачі. Припустимо, в цьому випадку ми подаємо сигнал постійної амплітуди постійної амплітуди в нашу систему і дивимось на амплітуду стійкої реакції. Ну, з'єднайте два постійних 16-кратних сигналу разом, і ви отримаєте тимчасовий пандус з подальшим стаціонарним виходом, який є амплітудою постійного стану (перевірка!) 16! У цьому випадку наше визначення немасштабної трансформації аналізу має більше сенсу, ніж інакше.

Зрештою, все про те, що ви намагаєтесь представляти. Існує багато причин для розгляду цього системно-орієнтованого визначення DFT.

1(N)


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

7

Насправді в різних та різних реалізаціях FFT / IFFT поширені 3 різні способи встановлення масштабних факторів: 1,0 вперед та 1,0 / N назад, 1,0 / N вперед і 1,0 назад, і 1,0 / sqrt (N) як вперед, так і назад.

Усі ці 3 варіації масштабування дозволяють IFFT (FFT (x)) туди і назад, використовуючи для загальних факторів загальну несказану функцію sin () та cos (), перетворення ідентичності.

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

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