Motýlí diagram - Butterfly diagram
V kontextu rychlá Fourierova transformace algoritmy, a motýl je část výpočtu, která kombinuje výsledky menších diskrétní Fourierovy transformace (DFT) do většího DFT nebo naopak (rozbití většího DFT na subtransformace). Název „motýl“ pochází z tvaru diagramu toku dat v případě radix-2, jak je popsáno níže.[1] Nejčasnější výskyt v tisku termínu je myšlenka být v roce 1969 MIT technická zpráva.[2][3] Stejnou strukturu lze nalézt také v Viterbiho algoritmus, slouží k nalezení nejpravděpodobnější sekvence skrytých stavů.
Nejčastěji se výraz „motýl“ objevuje v kontextu Cooley – Tukey FFT algoritmus, který rekurzivně rozbije DFT z kompozitní velikost n = rm do r menší transformace velikosti m kde r je „radix“ transformace. Tyto menší DFT se poté kombinují pomocí size-r motýly, které samy o sobě mají velikost DFT r (provedeno m časy na odpovídajících výstupech dílčích transformací) předem vynásobené kořeny jednoty (známý jako dvojité faktory ). (Toto je případ „decimace v čase“; lze také provést kroky obráceně, známé jako „decimace ve frekvenci“, kde jsou motýli na prvním místě a jsou následně vynásobeni dvojitými faktory. Viz také Cooley – Tukey FFT článek.)
Radix-2 motýlí diagram
V případě algoritmu radix-2 Cooley – Tukey je motýl jednoduše DFT velikosti 2, který bere dva vstupy (X0, X1) (odpovídající výstupy dvou dílčích transformací) a dává dva výstupy (y0, y1) podle vzorce (bez dvojité faktory ):
Pokud někdo nakreslí diagram toku dat pro tuto dvojici operací, (X0, X1) do (y0, y1) čáry se kříží a připomínají křídla a motýl, odtud název (viz také obrázek vpravo).
Přesněji řečeno, radix-2 decimační algoritmus FFT zapnutý n = 2 str vstupy s ohledem na primitiva n-tý kořen jednoty spoléhá na O (n log2 n) motýli v podobě:
kde k je celé číslo v závislosti na části transformace, která se počítá. Zatímco odpovídající inverzní transformaci lze matematicky provést nahrazením ω s ω−1 (a případně vynásobením faktorem celkového měřítka, v závislosti na normalizační konvenci), lze také přímo obrátit motýly:
odpovídá algoritmu FFT s decimací ve frekvenci.
Jiná použití
Motýl lze také použít ke zlepšení náhodnosti velkých polí částečně náhodných čísel, a to přivedením každého 32 nebo 64 bitového slova do kauzálního kontaktu s každým dalším slovem pomocí požadovaného hashovacího algoritmu, takže změna v kterémkoli jednom bitu má možnost změny všech bitů ve velkém poli.[4]
Viz také
Reference
- ^ Alan V. Oppenheim, Ronald W. Schafer a John R. Buck, Zpracování signálu v diskrétním čase, 2. vydání (Upper Saddle River, NJ: Prentice Hall, 1989)
- ^ C. J. Weinstein (21.11.1969). Kvantovací efekty v digitálních filtrech (Zpráva). Laboratoř MIT Lincoln. str. 42. Citováno 2015-02-10.
Tento výpočet, označovaný jako „motýl“
- ^ Cipra, Barry A. (2012-06-04). „FFT a Butterfly Diagram“. mathoverflow.net. Citováno 2015-02-10.
- ^ *Stiskněte, WH; Teukolsky, SA; Vetterling, WT; Flannery, BP (2007), „Část 7.2 Úplné hašování velkého pole“, Numerické recepty: Umění vědecké práce na počítači (3. vyd.), New York: Cambridge University Press, ISBN 978-0-521-88068-8