Метеликова діаграма

Матеріал з Вікіпедії — вільної енциклопедії.
(Перенаправлено з Діаграма метелик)
Перейти до навігації Перейти до пошуку
Графік потоку сигналів[en], що з'єднує входи (ліворуч) із залежними від них виходами (праворуч) для кроку у «метелику» за алгоритмом Кулі–Т'юкі за основою 2 для швидкого перетворення Фур'є. Ця діаграма нагадує метелика (як у метелика морфо, показаного для порівняння), звідси й назва, хоча в деяких країнах її також називають діаграмою пісочного годинника.

У контексті алгоритмів швидкого перетворення Фур'є «метелик» — це елемент обчислення, що об'єднує результати менших дискретних перетворень Фур'є (ДПФ) для створення більших ДПФ або, навпаки, розкладає більші ДПФ на менші. Назва «метелик» походить від форми діаграми потоку даних для другого степеня, як описано нижче.[1] Вважається, що цей термін вперше опубліковано у технічному звіті MIT за 1969 рік.[2][3] Подібна структура зустрічається й у алгоритмі Вітербі, який використовується для пошуку найбільш імовірної послідовності прихованих станів.

Термін «метелик» найчастіше використовується у контексті алгоритму ШПФ Кулі–Тьюкі, який рекурсивно розбиває ДПФ розмірності на менших перетворень розмірності , де є «основою» перетворення. Ці менші ДПФ потім об'єднуються за допомогою метеликів розмірності , що фактично є ДПФ розмірності (і так разів на відповідних виходах підперетворень), попередньо помножених на корені з одиниці (відомі як коефіцієнти обертання[en]). Це описує процес «децимації в часі». Можна також виконати кроки у зворотному порядку, що відоме як «децимація в частоті», де метелики застосовуються спочатку, а потім множаться на обертальні коефіцієнти. Додаткову інформацію можна знайти у статті про Кулі–Тьюкі ШПФ.

Метеликова діаграма за основою 2

[ред. | ред. код]

У випадку алгоритму Кулі–Тьюкі за основою 2 метелик є просто ДПФ основи 2, який приймає два входи — виходи двох підперетворень — і перетворює їх на два вихідні значення за формулою (без урахування коефіцієнтів обертання[en]):

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

ШПФ за основою 2 із децимацією в часі розбиває ДПФ довжини на два ДПФ довжини , за якими йде крок об'єднання, що складається з багатьох операцій «метелика».

Щобільше, алгоритм БПФ з проріджуванням у часі з основою 2 на вхідних даних, що використовує первинний корінь -го ступеня з одиниці залежить від () метеликів виду:

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

що відповідає алгоритму ШПФ з децимацією по частоті.

Інші застосування

[ред. | ред. код]

Метелик також застосовується для покращення випадковості великих масивів частково випадкових чисел, встановлюючи причинно-наслідковий зв'язок між кожним 32- або 64-бітним словом і всіма іншими словами за допомогою вибраного алгоритму хешування. Це гарантує, що зміна будь-якого біта призводить до зміни всіх бітів у великому масиві.[4]

Див. також

[ред. | ред. код]

Список літератури

[ред. | ред. код]
  1. Alan V. Oppenheim, Ronald W. Schafer, and John R. Buck, Discrete-Time Signal Processing, 2nd edition (Upper Saddle River, NJ: Prentice Hall, 1989)
  2. C. J. Weinstein (21 листопада 1969). Quantization Effects in Digital Filters (Звіт). MIT Lincoln Laboratory. с. 42. Архів оригіналу за 11 лютого 2015. Процитовано 10 лютого 2015. This computation, referred to as a 'butterfly'
  3. Cipra, Barry A. (4 червня 2012). FFT and Butterfly Diagram. mathoverflow.net. Процитовано 10 лютого 2015.
  4. Press, WH; Teukolsky, SA; Vetterling, WT; Flannery, BP (2007), Section 7.2 Completely Hashing a Large Array, Numerical Recipes: The Art of Scientific Computing (вид. 3rd), New York: Cambridge University Press, ISBN 978-0-521-88068-8, архів оригіналу за 11 серпня 2011, процитовано 13 серпня 2011

Посилання

[ред. | ред. код]