Чи реалізація radix-4 швидша, ніж еквівалентно добре кодований FFT? І якщо так, то чому б це було швидше?
Чи реалізація radix-4 швидша, ніж еквівалентно добре кодований FFT? І якщо так, то чому б це було швидше?
Відповіді:
Це залежить. Теоретично ви можете зберегти кілька множин за допомогою радіакс-4, оскільки радікс-4 має 1/4 кількість метеликів і 3 м.п. + 8 додає на метелика (якщо правильно структуровано), а радіакс 2 має 1 м.п. + 2 додавання на метелика .
Так що з точки зору множення це трохи краще, однак є більша складність щодо структури коду, обробки винятків, керування коефіцієнтами, управління регістром, зворотна адреса цифр тощо.
Таким чином, це лише перевага, якщо кількість mpy є обмежуючим фактором, що для більшості апаратних засобів у цей час не має місце.
простий спосіб дивитися на FFT радіакс-4 - це думати про одного метелика радикс-4 як про містити 4 метелики-радикс-2; 2 метелики за один прохід і 2 метелики в наступному проході. а коефіцієнти подвійності однакові, за винятком складного коефіцієнта скрутки для метеликів виключається різниця фаз . але все це означає - поміняти на і поміняти кілька знаків плюс і мінус. тож ваш alg radix-4 FFT потрібно лише прочитати в 4 складних значеннях один раз, завантажити один раз у складний сімейство, виконати купу арифметики та зберегти 4 результати один раз. ви робите один прохід-4 і виконуєте те саме завдання, що і два проходи-2. sin(⋅)cos(⋅)
Чиста кількість множин та доповнень, на мою думку, однакова, але метелик-радикс-4 може бути зроблений у банку реєстру процесорів (я думаю, що існує близько 16 різних реєстрів з плаваючою комою, і вам потрібно 8 для реальних і зображень частин з 4-х значень, 2 регістри для сіяння і косинусових подвійностей, а може бути, ще один реєстр або два для нуля) це швидше, ніж робити це в пам'яті.