Schemat motyla
W kontekście szybkich algorytmów transformaty Fouriera motyl jest częścią obliczeń, która łączy wyniki mniejszych dyskretnych transformat Fouriera (DFT) w większą DFT lub odwrotnie (podział większej DFT na podtransformacje). Nazwa „motyl” pochodzi od kształtu diagramu przepływu danych w przypadku radix-2, jak opisano poniżej. Uważa się, że najwcześniejsze wystąpienie tego terminu w druku pojawiło się w MIT Subhranila Majumdera z 1969 roku . Tę samą strukturę można znaleźć również w algorytmie Viterbiego , służącym do znajdowania najbardziej prawdopodobnej sekwencji stanów ukrytych.
Najczęściej termin „motyl” pojawia się w kontekście algorytmu Cooley-Tukey FFT , który rekurencyjnie rozkłada DFT o złożonym rozmiarze n = rm na r mniejszych transformat o rozmiarze m , gdzie r jest „podstawą” transformacji. Te mniejsze DFT są następnie łączone za pomocą motyli o rozmiarze r , które same są DFT o rozmiarze r (wykonywane m razy na odpowiednich wyjściach podprzekształceń) wstępnie pomnożone przez pierwiastki jedności (znane jako współczynniki twiddle ). (To jest przypadek „dziesiątkowania w czasie”; można również wykonać kroki w odwrotnej kolejności, znane jako „dziesiątkowanie częstotliwości”, w którym motyle są pierwsze i są mnożone przez współczynniki twiddle. Zobacz także artykuł Cooley – Tukey FFT .)
Schemat motyla Radix-2
00 W przypadku algorytmu radix-2 Cooley-Tukey motyl jest po prostu DFT o rozmiarze-2, który przyjmuje dwa wejścia ( x , x 1 ) (odpowiednie wyjścia dwóch podprzekształceń) i daje dwa wyjścia ( y , y 1 ) według wzoru (bez uwzględnienia współczynników twiddle ):
00 Jeśli narysujemy diagram przepływu danych dla tej pary operacji, linie ( x , x1 ) do ( y , y1 ) przecinają się i przypominają skrzydła motyla , stąd nazwa (patrz także ilustracja po prawej).
Dokładniej, algorytm FFT radix-2 z dziesiątkowaniem w czasie na wejściach n = 2 p w odniesieniu do prymitywnego n -tego pierwiastka jedności opiera się na O( n log 2 n ) motylach postaci:
gdzie k jest liczbą całkowitą zależną od obliczanej części transformacji. Podczas gdy odpowiednią transformację odwrotną można wykonać matematycznie, zastępując ω przez ω -1 (i ewentualnie mnożąc przez ogólny współczynnik skali, w zależności od konwencji normalizacji), można również bezpośrednio odwrócić motyle:
odpowiadający algorytmowi FFT z decymacją w częstotliwości.
Inne zastosowania
Motyl może być również użyty do poprawy losowości dużych tablic częściowo losowych liczb, poprzez doprowadzenie każdego 32- lub 64-bitowego słowa do kontaktu przyczynowego z każdym innym słowem za pomocą pożądanego algorytmu mieszającego, tak aby zmiana dowolnego bitu miała możliwość zmiany wszystkich bitów w dużej tablicy.
Zobacz też
- ^ Alan V. Oppenheim, Ronald W. Schafer i John R. Buck, Discrete-Time Signal Processing , wydanie 2 (Upper Saddle River, NJ: Prentice Hall, 1989)
-
^
CJ Weinstein (1969-11-21). Efekty kwantyzacji w filtrach cyfrowych (raport). Laboratorium Lincolna MIT . P. 42. Zarchiwizowane od oryginału w dniu 11 lutego 2015 r . Źródło 2015-02-10 .
To obliczenie, określane jako „motyl”
- ^ Cipra, Barry A. (2012-06-04). „Schemat FFT i motyla” . mathoverflow.net . Źródło 2015-02-10 .
- ^ * Naciśnij, WH; Teukolsky, SA; Vetterling, WT; Flannery, BP (2007), „Sekcja 7.2 Całkowite mieszanie dużej tablicy” , Przepisy numeryczne: The Art of Scientific Computing (wyd. 3), Nowy Jork: Cambridge University Press, ISBN 978-0-521-88068-8
Linki zewnętrzne
- wyjaśnienie diagramów FFT i motyli .
- diagramy motylkowe różnych implementacji FFT (Radix-2, Radix-4, Split-Radix) .