Артефакти у FFT


10

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

Я вважаю, що зображення є досить зрозумілим. Сигнал IFFT - це лише обернене перетворення "спектру FFT", а сюжет "Різниця" - це різниця між сигналом IFFT і вихідним сигналом ( ).IFFT - Original

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

Примітка. Цей сюжет має 32 бали, але я перевірив 100, 1000, 1024, 256 та 64 бали, і завжди є цей залишок у різниці аналогічної величини (або або ).10161015


4
Вся математика з обмеженою точністю має ці помилки, а не лише FFT.
ендоліт

Відповіді:


16

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


Чи буде ситуація, коли ця помилка може вибухнути за межі точності з плаваючою точкою?
Кітчі

6
І лише для підтвердження відповіді @ MattL: і є 53 біти мантіси у подвійній точності з плаваючою комою. Тож помилка округлення, яку ви бачите, якраз в останніх 2 бітах. Це приблизно так добре, як це отримує. 1016253
Мандрівна логіка

@Kitchi: так, існує багато ситуацій, коли числові помилки можуть бути головною проблемою, навіть у форматі з плаваючою комою. Інверсія матриці була б одним із багатьох прикладів. Це все стосується номера умови .
Метт Л.

1
@MattL. - Чудово! Дякую за довідку.
Кітчі

7

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

EPS без аргументів - це відстань від 1,0 до наступного більшого числа подвійної точності, тобто EPS = 2 ^ (- 52).

Помилка, яку ви бачите на своїй ділянці, знаходиться в діапазоні, поверненому eps (тобто 2 ^ (- 52)).

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

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