WikiDer > Cooley-Tukey FFT algoritmi

Cooley–Tukey FFT algorithm

The Kuli-Tukey algoritminomi bilan nomlangan J. V. Kuli va Jon Tukey, eng keng tarqalgan tez Fourier konvertatsiyasi (FFT) algoritmi. Bu qayta ifodalaydi diskret Furye konvertatsiyasi (DFT) o'zboshimchalik bilan kompozit hajmi N = N1N2 xususida N1 kichik DFT o'lchamlari N2, rekursiv, hisoblash vaqtini O ga kamaytirish (N jurnal N) yuqori kompozitsion uchun N (silliq raqamlar). Algoritm muhimligi sababli, quyida tavsiflanganidek, o'ziga xos variantlar va amalga oshirish uslublari o'z nomlari bilan tanilgan.

Cooley-Tukey algoritmi DFTni kichik DFTlarga ajratganligi sababli, uni DFT uchun boshqa har qanday algoritm bilan o'zboshimchalik bilan birlashtirish mumkin. Masalan, Rader yoki Bluesteinniki algoritmidan Cooley-Tukey tomonidan buzib bo'lmaydigan katta asosiy omillarni boshqarish uchun foydalanish mumkin asosiy omil algoritmi ajratishda yuqori samaradorlik uchun foydalanish mumkin nisbatan asosiy omillar.

Algoritm, uning rekursiv qo'llanilishi bilan birga, tomonidan ixtiro qilingan Karl Fridrix Gauss. Kuli va Tukey 160 yildan keyin mustaqil ravishda uni qayta kashf etdilar va ommalashtirdilar.

Tarix

Ushbu algoritm, shu jumladan uning rekursiv qo'llanilishi, 1805 yilgacha ixtiro qilingan Karl Fridrix Gauss, traektoriyalarini interpolatsiya qilishda kim foydalangan asteroidlar Pallas va Juno, lekin uning ishi keng e'tirof etilmadi (faqat vafotidan keyin va keyin nashr etilgan) neo-lotin).[1][2] Biroq, Gauss asimptotik hisoblash vaqtini tahlil qilmadi. 19-asr va 20-asr boshlarida turli xil cheklangan shakllar ham bir necha bor qayta kashf etildi.[2] FFTlar keyinchalik ommalashib ketdi Jeyms Kuli ning IBM va Jon Tukey ning Prinston algoritmni ixtiro qilgan va uni kompyuterda qanday qilib qulay tarzda bajarishni tavsiflovchi maqolani 1965 yilda nashr etdi.[3]

Xabarlarga ko'ra, Tukey ushbu g'oyani Prezident Kennedining Ilmiy maslahat qo'mitasining yig'ilish paytida aniqlash yo'llarini muhokama qilish paytida paydo bo'lgan. yadroviy qurol sinovlari ichida Sovet Ittifoqi mamlakat tashqarisida joylashgan seysmometrlardan foydalanish orqali. Ushbu datchiklar seysmologik vaqt qatorlarini yaratadi. Shu bilan birga, ushbu ma'lumotlarni tahlil qilish DFTni hisoblash uchun tezkor algoritmlarni datchiklar soni va vaqt davomiyligi talab qiladi. Ushbu vazifa yadroviy sinovlarni taqiqlash to'g'risidagi taklifni ratifikatsiya qilish uchun juda muhim edi, shuning uchun har qanday qonunbuzarliklar sovet muassasalariga tashrif buyurmasdan kerak bo'lganda aniqlanishi mumkin edi.[4][5] Ushbu uchrashuvning yana bir ishtirokchisi, Richard Garvin IBM kompaniyasi ushbu usulning potentsialini tan oldi va Tukeyni Kuli bilan aloqada qildi, ammo Kuli asl maqsadini bilmasligiga ishonch hosil qildi. Buning o'rniga Kuliga bu 3-o'lchovli kristaldagi spin yo'nalishlarining davriyligini aniqlash uchun zarur ekanligini aytdi. Geliy-3. Keyinchalik Cooley va Tukey o'zlarining qo'shma maqolalarini nashr etdilar va bir vaqtning o'zida ishlab chiqilganligi sababli tezda qabul qilindi Analog-raqamli konvertorlar 300 kHz gacha bo'lgan tezlikda namuna olish imkoniyatiga ega.

Gauss xuddi shu algoritmni ta'riflagani (asimptotik narxini tahlil qilmasdan bo'lsa ham) Kuli va Tukeyning 1965 yilgi maqolasidan bir necha yil o'tgach amalga oshirildi.[2] Ularning qog'ozi faqat ilhom manbai sifatida ko'rsatilgan I. J. Yaxshi hozirda nima deyiladi asosiy omil FFT algoritmi (PFA);[3] Goodning algoritmi dastlab Cooley-Tukey algoritmiga teng deb hisoblangan bo'lsa-da, PFA bu juda boshqacha algoritm ekanligi tezda anglandi (faqat o'lchamdagi o'lchamlarda ishlaydi) nisbatan asosiy omillarga bog'liq va Xitoyning qoldiq teoremasi, Cooley-Tukey-da har qanday kompozit o'lchamlarni qo'llab-quvvatlashdan farqli o'laroq).[6]

Radix-2 DIT ishi

A radix-2 o'z vaqtida yo'q qilish (DIT) FFT - Cooley-Tukey algoritmining eng sodda va eng keng tarqalgan shakli, ammo yuqori darajada optimallashtirilgan Cooley-Tukey dasturlari odatda quyida tavsiflangan algoritmning boshqa shakllaridan foydalanadi. Radix-2 DIT hajmi DFT ni ajratadi N o'lchamdagi ikkita DFTga (shu sababli "radix-2" nomi berilgan) N/ 2 har bir rekursiv bosqich bilan.

Diskret Furye konvertatsiyasi (DFT) quyidagi formula bilan aniqlanadi:

qayerda dan iborat bo'lgan butun son hisoblanadi ga .

Dastlab Radix-2 DIT juft indeksli kirishlarning DFTlarini hisoblab chiqadiva toq-indeksli kirishlar , so'ngra ikkita ketma-ketlikning DFTini hosil qilish uchun ushbu ikkita natijani birlashtiradi. Keyinchalik bu g'oyani amalga oshirish mumkin rekursiv umumiy ish vaqtini O ga kamaytirish (N jurnal N). Ushbu soddalashtirilgan shakl buni nazarda tutadi N a ikkitasining kuchi; namunaviy ochkolar soni N odatda dastur tomonidan erkin tanlanishi mumkin (masalan, namuna tezligini yoki oynani o'zgartirish, nolga to'ldirish va hk), bu ko'pincha muhim cheklov emas.

Radix-2 DIT algoritmi funksiyaning DFT-ni qayta tuzadi ikki qismga bo'linadi: juft raqamli ko'rsatkichlar bo'yicha yig'indisi va toq sonli ko'rsatkichlar bo'yicha yig'indisi :

Umumiy multiplikatorni omil qilish mumkin quyidagi tenglamada ko'rsatilgandek, ikkinchi yig'indidan. Shunda aniqki, ikkala yig'indilar juft indekslangan qismning DFT hisoblanadi va toq indeksli qismning DFT-si funktsiyasi . DFT-ni belgilang Even-indekslangan yozuvlar tomonidan va DFT Odd-indekslangan yozuvlar tomonidan va biz quyidagilarni olamiz:

Rahmat kompleks eksponentning davriyligi, dan ham olinadi va :

Qayta yozishimiz mumkin kabi:

Uzunlik DFT ni ifodalovchi bu natija N ikki DFT o'lchamlari bo'yicha rekursiv ravishda N/ 2, radix-2 DIT tez Fourier konvertatsiyasining yadrosi. Algoritm bir nechta DFT natijalarini hisoblash uchun oraliq hisoblash natijalarini qayta ishlatib, tezligini oshiradi. Yakuniy natijalar +/− kombinatsiyasi orqali olinishini unutmang va , bu shunchaki hajmi-2 DFT (ba'zan a deb ham nomlanadi kelebek shu nuqtai nazardan); bu quyida keltirilgan kattaroq radikallarga umumlashtirilganda, hajmi-2 DFT o'rniga kattaroq DFT (uning o'zi FFT bilan baholanishi mumkin) bilan almashtiriladi.

Uchun ma'lumotlar oqimi diagrammasi N= 8: o'z vaqtida rad etilgan radix-2 FFT uzunlikni buzadi -N DFT ikki uzunlikka -N/ 2 DFT, so'ngra "butterfly" operatsiyalari deb nomlangan ko'p o'lchamdagi 2 DFTlardan tashkil topgan birlashma bosqichi (ma'lumotlar oqimi diagrammasi shakli tufayli shunday deyilgan).

Bu jarayon umumiy texnikaning namunasidir algoritmlarni ajratish va yutish; ko'pgina an'anaviy dasturlarda aniq rekursiyadan qochishadi va buning o'rniga hisoblash daraxtini bosib o'tishadi kenglik - birinchi moda.

Yuqoridagi o'lchamning qayta ifodasiN DFT ikki o'lchovliN/ 2 DFT ba'zida DanielsonLanczos lemma, chunki 1942 yilda bu ikki muallif tomonidan shaxsiyat qayd etilgan[7] (ta'sirlangan Runge 1903 ish[2]). Ular o'zlarining lemmalarini "orqaga" rekursiv usulda takroriy ravishda qo'lladilar ikki baravar transformatsiya spektri yaqinlashguncha DFT kattaligi (garchi ular buni anglamagan bo'lsa ham chiziqli [ya'ni, buyurtma N jurnalN] ular erishgan asimptotik murakkablik). Danielson-Lanczos ishi keng tarqalishini oldindan belgilab qo'ygan mexanik yoki elektron hisoblash mashinalari va talab qilinadi qo'lda hisoblash (ehtimol kabi mexanik yordam bilan qo'shish mashinalari); ular 64 DFT hajmdagi hisoblash uchun 140 daqiqa hisoblash vaqti haqida xabar berishdi haqiqiy kirish 3-5 ta muhim raqamga. Cooley and Tukey ning 1965 yildagi maqolasida 2048 o'lchamdagi DFT kompleksi uchun 0,02 minut ish vaqti ko'rsatilgan. IBM 7094 (ehtimol 36-bitda) bitta aniqlik, ~ 8 ta raqam).[3] Vaqtni operatsiyalar soniga qarab hisoblab chiqsak, bu taxminan 800,000 tezlashtirish koeffitsientiga to'g'ri keladi. (Qo'lni hisoblash uchun vaqtni istiqbolli qilib qo'yish uchun 64-o'lchov uchun 140 minut o'rtacha suzuvchi nuqta operatsiyasiga o'rtacha 16 soniya to'g'ri keladi, ularning 20% ​​ko'paytiriladi).

Psevdokod

Yilda psevdokod, quyidagi protsedura yozilishi mumkin:[8]

X0,...,N−1ditfft2(x, N, s):             DFT ning (x0, xs, x2s, ..., x(N-1)s):    agar N = 1 keyin        X0x0                                      ahamiyatsiz o'lcham-1 DFT tayanch qutisi    boshqa        X0,...,N/2−1ditfft2(x, N/2, 2s)             DFT ning (x0, x2s, x4s, ...)        XN/2,...,N−1ditfft2(x+ s, N/2, 2s)           DFT ning (xs, xs+2s, xs+4s, ...)        uchun k = 0 dan N/2−1 qil                        ikki yarimning DFTlarini to'liq DFTga birlashtiring:            t ← Xk            Xk ← t + exp (-2πmen k/N) Xk+N/2            Xk+N/2 ← t - exp (−2π.)men k/N) Xk+N/2        uchun tugatish    tugatish agar

Bu yerda, ditfft2(x,N, 1), hisoblab chiqadi X= DFT (x) joydan tashqarida radix-2 DIT FFT tomonidan, bu erda N tamsayı kuchi 2 va s= 1 bu qadam kirish x qator. x+s bilan boshlangan qatorni bildiradi xs.

(Natijalar to'g'ri tartibda X va bundan keyin yo'q bit-teskari almashtirish zarur; tez-tez aytib o'tilgan alohida bitni qaytarish bosqichining zaruriyati faqat quyida tavsiflangan ba'zi bir algoritmlar uchun paydo bo'ladi.)

Yuqori samaradorlikdagi FFT dasturlari ushbu oddiy psevdokod bilan taqqoslaganda, bunday algoritmni amalga oshirishda ko'plab o'zgartirishlarni amalga oshiradi. Masalan, dan kattaroq tayanch kassadan foydalanish mumkin N= 1 dan amortizatsiya rekursiya uchun qo'shimcha xarajatlar twiddle omillari oldindan hisoblash mumkin va undan kattaroq radislar ko'pincha ishlatiladi kesh sabablar; shu va boshqa optimallashtirishlar birgalikda ishlash ko'rsatkichlarini kattaroq tartibda yaxshilashi mumkin.[8] (Ko'pgina o'quv qo'llanmalarida chuqurlik birinchi rekursiya butunlay noreursiv foydasiga yo'q qilinadi kenglik - birinchi yondashuv, ammo chuqurlik bo'yicha birinchi rekursiya yaxshiroq ekanligi ta'kidlangan xotira joyi.[8][9]) Ushbu fikrlarning bir nechtasi quyida batafsilroq tavsiflangan.

Fikr

Cooley-Tukey FFT-ning umumiy faktorizatsiya qilishning asosiy bosqichi 1-darajali DFTni 2-darajali DFTga o'xshash narsa sifatida qayta izohlash sifatida qaralishi mumkin. Uzunlikning 1 o'lchovli qatori N = N1N2 2d sifatida qayta talqin qilinadi N1×N2 matritsa saqlangan ustunli buyurtma. Ulardan biri kichik o'lchamdagi DFTlarni bajaradi N2 yo'nalishi (qo'shni bo'lmagan yo'nalish), so'ngra fazaviy omillarga ko'paytiriladi (twiddle omillari) va nihoyat 1d DFTlarni N1 yo'nalish. Transpozitsiya bosqichi o'rtada, bu erda ko'rsatilgandek yoki boshida yoki oxirida amalga oshirilishi mumkin. Bu kichikroq transformatsiyalar uchun rekursiv ravishda amalga oshiriladi.
Qator va ustunli buyruqlar tasviri

Umuman olganda, Cooley-Tukey algoritmlari kompozitsion kattalikdagi DFTni rekursiv ravishda qayta ifodalaydi N = N1N2 kabi:[10]

  1. Amalga oshirish N1 DFT o'lchamlari N2.
  2. Kompleks bo'yicha ko'paytiring birlikning ildizlari (ko'pincha twiddle omillari).
  3. Amalga oshirish N2 DFT o'lchamlari N1.

Odatda, ham N1 yoki N2 kichik omil (emas albatta bosh), deb nomlangan radix (bu rekursiya bosqichlari o'rtasida farq qilishi mumkin). Agar N1 radiks bo'lib, u a deb nomlanadi o'z vaqtida yo'q qilish (DIT) algoritmi, agar shunday bo'lsa N2 radiks, u shunday chastotada parchalanish (DIF, shuningdek, Sande-Tukey algoritmi deb ataladi). Yuqorida keltirilgan versiya radix-2 DIT algoritmi edi; yakuniy ifodada, g'alati konvertatsiyani ko'paytirish fazasi twiddle faktor va +/- kombinatsiyasi (kelebek) juft va toq transformatsiyalarning kattaligi-2 DFT. (Radiksning kichik DFT-si ba'zan a deb nomlanadi kelebek, shakli tufayli deb nomlangan ma'lumotlar oqimining diagrammasi radix-2 holati uchun.)

O'zgarishlar

Cooley-Tukey algoritmida boshqa ko'plab farqlar mavjud. Aralash radiusli dasturlar kompozit o'lchamlarni O (odatda har doim ham emas) ishlatadigan ikkitadan tashqari turli xil (odatda kichik) omillar bilan ishlaydi.N2) rekursiyaning asosiy asosiy holatlari algoritmi (bundan tashqari N jurnalN kabi asosiy asosiy holatlar algoritmi Raderyoki Bluesteinalgoritmi). Split radix radix 2 ning birinchi konvertatsiyasi hech qanday burilish omilini talab qilmasligini ishlatib, ikkita kuchning o'lchamlari bo'yicha ma'lum bo'lgan eng past arifmetik operatsiya soniga erishish uchun 2 va 4 radikallarni birlashtiradi,[10] garchi so'nggi o'zgarishlarning soni pastroq bo'lsa ham.[11][12] (Hozirgi kompyuterlarda ishlash ko'proq belgilanadi kesh va CPU quvuri qat'iy operatsiyalarni hisoblashdan ko'ra mulohazalar; yaxshi optimallashtirilgan FFT dasturlari ko'pincha katta hajmdagi radikallar va / yoki qattiq kodlangan bazaviy konvertlarni qo'llaydi.[13]).

Cooley-Tukey algoritmiga qarashning yana bir usuli bu uning hajmini qayta ifodalashidir N sifatida bir o'lchovli DFT N1 tomonidan N2 chiqish matritsasi bo'lgan ikki o'lchovli DFT (ortiqcha dubllar) ko'chirildi. Ushbu barcha transpozitsiyalarning aniq natijasi radix-2 algoritmi uchun kirish (DIF) yoki chiqish (DIT) indekslarining biroz teskari tomoniga to'g'ri keladi. Agar kichkina radiusdan foydalanish o'rniga, taxminan radius ishlatilsa N va aniq kirish / chiqish matritsasi transpozitsiyalari, a deb nomlanadi to'rt bosqichli algoritm (yoki olti bosqichli, transpozitsiyalar soniga qarab), dastlab xotira joyini yaxshilash uchun taklif qilingan,[14][15] masalan. keshni optimallashtirish uchun yoki yadrodan tashqari operatsiya bo'lib, keyinchalik u eng maqbul ekanligi ko'rsatildi keshni unutadigan algoritm.[16]

Umumiy Cooley-Tukey faktorizatsiyasi indekslarni qayta yozadi k va n kabi va navbati bilan, qaerda indekslar ka va na 0 dan boshlash ..Na-1 (uchun a 1 yoki 2). Ya'ni, bu kirishni qayta indekslaydi (n) va chiqish (k) kabi N1 tomonidan N2 ikki o'lchovli massivlar katta-mayor va asosiy tartibnavbati bilan; bu indekslashlar orasidagi farq - yuqorida aytib o'tilganidek, transpozitsiya. Ushbu qayta indeksatsiya DFT formulasiga almashtirilganda nk, o'zaro bog'liqlik yo'qoladi (uning eksponentligi birlik), qolgan terminlar beradi

.

bu erda har bir ichki summa o'lchamdagi DFT N2, har bir tashqi yig'indisi hajmi DFT N1, va [...] qavsli muddat twiddle omilidir.

Ixtiyoriy radius r Kuli ham, Tukey ham ko'rsatganidek (shuningdek, aralash radikallar) ishlatilishi mumkin[3] shuningdek Gauss (radix-3 va radix-6 qadamlariga misollar keltirgan).[2] Kuli va Tukey dastlab radikal kapalak uchun O (r2) ishlaydi va shuning uchun radius uchun murakkablikni hisobladi r O bo'lishr2 N/r jurnalrN) = O (N jurnal2(Nr/ log2r); ning qiymatlarini hisoblashdan r/ log2r ning tamsayı qiymatlari uchun r 2 dan 12 gacha optimal radius 3 (eng yaqin butun son) ga teng e, bu esa minimallashtiradi r/ log2r).[3][17] Ammo bu tahlil noto'g'ri edi: radix-butterfly ham DFT bo'lib, F (FFT) algoritmi orqali O (r jurnal r) operatsiyalar, shuning uchun radix r aslida O murakkabligida bekor qilinadi (r log (rN/r jurnalrN) va optimal r yanada murakkab mulohazalar bilan belgilanadi. Amalda juda katta r (32 yoki 64), masalan, samarali foydalanish uchun muhimdir. ko'p sonli protsessor registrlari zamonaviy protsessorlarda,[13] va hatto cheksiz radius r=N shuningdek, O ga erishadi (N jurnalN) murakkablik va katta uchun nazariy va amaliy afzalliklarga ega N yuqorida aytib o'tilganidek.[14][15][16]

Ma'lumotlarni qayta tartiblash, bitlarni almashtirish va joyidagi algoritmlar

Yuqoridagi DFT-ning mavhum Kuli-Tukey faktorizatsiyasi ba'zi shakllarda algoritmning barcha tatbiq etilishlariga taalluqli bo'lsa-da, FFTning har bir bosqichida ma'lumotlarni buyurtma qilish va ularga kirish usullarida juda xilma-xillik mavjud. An-ni yaratish muammosi alohida qiziqish uyg'otadi joyidagi algoritm bu faqat O (1) yordamchi xotiradan foydalangan holda, kirish ma'lumotlarini chiqish ma'lumotlari bilan yozib qo'yadi.

Eng taniqli qayta tartiblash texnikasi aniq o'z ichiga oladi bitni qaytarish joyidagi radix-2 algoritmlari uchun. Bitni qaytarish bo'ladi almashtirish bu erda indeksdagi ma'lumotlar n, yozilgan ikkilik raqamlar bilan b4b3b2b1b0 (masalan, uchun 5 ta raqam N= 32 kirish), teskari raqamlar bilan indeksga o'tkaziladi b0b1b2b3b4 . Yuqorida keltirilgan radix-2 DIT algoritmining so'nggi bosqichini ko'rib chiqing, bu erda chiqish kirish joyida yoziladi: qachon va hajmi-2 DFT bilan birlashtirilib, ushbu ikkita qiymat natijalar ustiga yoziladi. Biroq, ikkita chiqish qiymati birinchi va ikkinchisiga to'g'ri kelishi kerak yarmi ga mos keladigan chiqish massivining eng muhim bit b4 (uchun N= 32); Holbuki, ikkita kirish va ga mos keladigan juft va toq elementlarda o'zaro bog'langan kamida muhim bit b0. Shunday qilib, mahsulotni to'g'ri joyda olish uchun, b0 o'rnini egallashi kerak b4 va indeks bo'ladi b0b4b3b2b1. Va keyingi rekursiv bosqich uchun ushbu eng kam 4 ta bit bo'ladi b1b4b3b2, Agar siz radix-2 DIT algoritmining barcha rekursiv bosqichlarini qo'shsangiz, barchasi bitlarni teskari aylantirish kerak va shu sababli kirishni oldindan qayta ishlash kerak (yoki tartibda ishlab chiqarilgan mahsulotni olish uchun biroz teskari aylantirish bilan). (Agar har bir o'lcham-N/ 2 subtransform - bu qo'shni ma'lumotlar, DIT ustida ishlash kiritish bit-reversal orqali oldindan qayta ishlanadi.) Shunga mos ravishda, agar siz barcha bosqichlarni teskari tartibda bajaradigan bo'lsangiz, siz keyingi ishlov berishda bitni teskari aylantirish bilan radix-2 DIF algoritmini olasiz (yoki mos ravishda oldindan qayta ishlash).

Ushbu algoritmda ishlatiladigan logaritma (log) asosiy 2-logaritma hisoblanadi.

Quyida bit-reversal permutation yordamida amalga oshirilgan takrorlanadigan radix-2 FFT algoritmi uchun psevdokod mavjud.[18]

algoritm iterative-fft bu    kiritish: Array a ning n murakkab qiymatlar, bu erda n 2 kuchga ega. chiqish: Array A a ning DFT. bit-teskari nusxa (a, A) na. uzunlik uchun s = 1 ga log (n) qil        m ← 2s        ωm ← exp (-2π.)men/m)         uchun k = 0 ga n-1 tomonidan m qil            ω ← 1            uchun j = 0 ga m/2 – 1 qil                tω A[k + j + m/2]                sizA[k + j]                A[k + j] ← siz + t                A[k + j + m/2] ← sizt                ωω ωm       qaytish A

Bit-teskari nusxa ko'chirish protsedurasi quyidagicha amalga oshirilishi mumkin.

algoritm bit-teskari nusxa (a,A) bu    kiritish: Array a ning n murakkab qiymatlar, bu erda n 2 kuchga ega. chiqish: Array A hajmi n.    na. uzunlik uchun k = 0 ga n – 1 qil        A[rev (k)]: = a[k]

Shu bilan bir qatorda, ba'zi bir dasturlar (masalan, konvolyutsiya) bit-teskari ma'lumotlarda bir xil darajada ishlaydi, shuning uchun tabiiy tartibda yakuniy natijalarni olish uchun oldinga o'zgartirishni, ishlov berishni va keyin teskari o'zgartirishni hammasini bitni teskari o'zgartirmasdan amalga oshirish mumkin.

Biroq, ko'plab FFT foydalanuvchilari tabiiy buyurtma natijalarini afzal ko'rishadi va bitni qaytarishning alohida, aniq bosqichi hisoblash vaqtiga beparvo ta'sir ko'rsatishi mumkin,[13] bitni almashtirish O da bajarilishi mumkin bo'lsa ham (N) vaqt va ko'plab tadqiqotlarning predmeti bo'lgan.[19][20][21] Shuningdek, almashtirish radix-2 holatida biroz teskari bo'lsa-da, odatda, aralash radiusli ish uchun o'zboshimchalik bilan (aralash bazali) raqamli teskari bo'ladi va almashtirish algoritmlarini amalga oshirish yanada murakkablashadi. Bundan tashqari, ko'plab apparat arxitekturalarida FFT algoritmining oraliq bosqichlarini ketma-ket (yoki hech bo'lmaganda lokalizatsiya qilingan) ma'lumotlar elementlarida ishlashlari uchun qayta buyurtma qilish maqsadga muvofiqdir. Shu maqsadda, Cooley-Tukey algoritmi uchun bitning alohida o'zgarishini talab qilmaydigan va / yoki oraliq bosqichlarda qo'shimcha almashtirishlarni o'z ichiga oladigan bir qator muqobil dasturlar ishlab chiqilgan.

Agar shunday bo'lsa, muammo juda soddalashtirilgan joydan tashqarida: chiqish massivi kirish massividan farq qiladi yoki unga teng ravishda teng o'lchamdagi yordamchi massiv mavjud. The Stokxem avtomatik saralash algoritm[22][23] FFTning har bir bosqichini joyidan tashqarida bajaradi, odatda ikki qator orasida oldinga va orqaga yozib, har bir bosqich bilan indekslarning bitta "raqamini" o'tkazadi va ayniqsa mashhur bo'lgan SIMD me'morchilik.[23][24] SIMD uchun yanada katta potentsial afzalliklar (ketma-ket kirish imkoniyatlari) taklif qilingan Pease algoritm,[25] shuningdek, har bir bosqichda o'z o'rnini o'zgartiradi, ammo bu usul alohida bit / raqamli o'zgarishni va O (N jurnal N) saqlash. Bundan tashqari, Cooley-Tukey faktorizatsiya ta'rifini to'g'ridan-to'g'ri aniq (chuqurlik birinchi) rekursiya va mayda radikallar, ular tabiiy ravishda joyidan chiqib ketishni ishlab chiqaradilar, bu alohida almashtirish bosqichisiz (yuqoridagi psevdokodda bo'lgani kabi) va shunday bo'lishi mumkin keshni unutish tizimlari bo'yicha mahalliy imtiyozlar ierarxik xotira.[9][13][26]

Yordamchi omborxonasiz va alohida raqamli teskari o'tishsiz joyida algoritmlar uchun odatiy strategiya oraliq bosqichlarda kichik matritsali transpozitsiyalarni (individual juft raqamlarni almashtiradigan) o'z ichiga oladi, bu radius kapalaklari bilan birlashtirib, o'tish sonini kamaytirish uchun. ma'lumotlar.[13][27][28][29][30]

Adabiyotlar

  1. ^ Gauss, Karl Fridrix (1876) [nd.]. Theoria Interpolationis Methodo Nova Tractata. Karl Fridrix Gauss Verke. Band 3. Göttingen: Königliche Gesellschaft der Wissenschaften. 265–327 betlar.
  2. ^ a b v d e Heideman, M. T., D. H. Jonson va C. S. Burrus, "Gauss va tezkor Fyurening o'zgarishi tarixi, "IEEE ASSP jurnali, 1, (4), 14–21 (1984)
  3. ^ a b v d e Kuli, Jeyms V.; Tukey, Jon V. (1965). "Murakkab Furye seriyasini mashinada hisoblash algoritmi". Matematika. Hisoblash. 19 (90): 297–301. doi:10.2307/2003354. JSTOR 2003354.
  4. ^ Kuli, Jeyms V.; Lyuis, Piter A. V.; Welch, Piter D. (1967). "Furye tez o'zgarishi to'g'risida tarixiy eslatmalar" (PDF). IEEE audio va elektroakustika bo'yicha operatsiyalar. 15 (2): 76–79. CiteSeerX 10.1.1.467.7209. doi:10.1109 / tau.1967.1161903.
  5. ^ Rokmor, Daniel N., Hisoblash. Ilmiy ish. Ing. 2 (1), 60 (2000). FFT - butun oila foydalanishi mumkin bo'lgan algoritm "Asrning eng yaxshi o'n algoritmi" bo'yicha maxsus nashr"Arxivlangan nusxa" (PDF). Arxivlandi asl nusxasi (PDF) 2009-04-07 da. Olingan 2009-03-31.CS1 maint: nom sifatida arxivlangan nusxa (havola)
  6. ^ Jeyms V.Kuli, Piter A.V.Lyuis va Piter V.Velch, "Furyening tez o'zgarishi haqidagi tarixiy eslatmalar". Proc. IEEE, vol. 55 (№ 10), p. 1675–1677 (1967).
  7. ^ Danielson, G. C. va C. Lanczos, "Furye amaliy tahlilining ba'zi yaxshilanishlari va ularni suyuqliklardan rentgen nurlari tarqalishiga qo'llash" J. Franklin Inst. 233, 365-380 va 435-452 (1942).
  8. ^ a b v S. G. Jonson va M. Frigo "FFTlarni amalda qo'llash, "ichida Furye tez o'zgarishi (C. S. Burrus, tahr.), Ch. 11, Rays universiteti, Xyuston TX: aloqalar, sentyabr 2008 yil.
  9. ^ a b Singleton, Richard C. (1967). "Furye tezkor o'zgarishini hisoblash to'g'risida". Kommunal. ACM. 10 (10): 647–654. doi:10.1145/363717.363771. S2CID 6287781.
  10. ^ a b Dyuhamel, P. va M. Vetterli, "Tez Furye o'zgarishi: o'quv mashg'ulotlari va eng zamonaviy" Signalni qayta ishlash 19, 259–299 (1990)
  11. ^ Lundy, T. va J. Van Buskirk, "Haqiqiy FFT-larga yangi matritsali yondashuv va 2 uzunlikdagi konvolusiyalar.k," Hisoblash 80, 23–45 (2007).
  12. ^ Jonson, S. G. va M. Frigo "Kamroq arifmetik amallar bilan o'zgartirilgan split-radixli FFT," IEEE Trans. Signal jarayoni. 55 (1), 111–119 (2007).
  13. ^ a b v d e Frigo, M.; Jonson, S. G. (2005). "FFTW3 loyihalashtirish va amalga oshirish" (PDF). IEEE ish yuritish. 93 (2): 216–231. CiteSeerX 10.1.1.66.3097. doi:10.1109 / JPROC.2004.840301. S2CID 6644892.
  14. ^ a b Gentleman W. M. va G. Sande, "Tez Fyurening o'zgarishi - o'yin-kulgi va foyda uchun" Proc. AFIPS 29, 563–578 (1966).
  15. ^ a b Beyli, Devid H., "tashqi yoki ierarxik xotiradagi FFTlar" J. Supercomputing 4 (1), 23–35 (1990)
  16. ^ a b M. Frigo, C. E. Leyzerson, X. Prokop va S. Ramachandran. Keshni unutadigan algoritmlar. Yilda Kompyuter fanlari asoslari bo'yicha 40-IEEE simpoziumi materiallari (FOCS 99), s.285-297. 1999 yil. IEEE-da kengaytirilgan referat, Citeseer-da.
  17. ^ Cooley, J. W., P. Lyuis va P. Welch, "Tez Furye o'zgarishi va uning qo'llanilishi", IEEE Trans on Education 12, 1, 28–34 (1969)
  18. ^ al.], Tomas X. Kormen ... [et; Leyzerson, Charlz; Rivest, Ronald; Stein, Clifford (2009). Algoritmlarga kirish (3-nashr). Kembrij, Mass.: MIT Press. 915-918 betlar. ISBN 978-0-262-03384-8.
  19. ^ Karp, Alan H. (1996). "Uniprotsessorlarda bitni qaytarish". SIAM sharhi. 38 (1): 1–26. CiteSeerX 10.1.1.24.2913. doi:10.1137/1038001. JSTOR 2132972.
  20. ^ Karter, Larri; Gatlin, Kang Su (1998). Optimal bit-reversal permutation dasturi tomon. Proc. 39-Ann. Simp. Topildi Komp. Ilmiy ish. (FOCS). 544-553 betlar. CiteSeerX 10.1.1.46.9319. doi:10.1109 / SFCS.1998.743505. ISBN 978-0-8186-9172-0. S2CID 14307262.
  21. ^ Rubio, M.; Gomes, P .; Drouiche, K. (2002). "Yangi o'ta tezkor bitni qaytarish algoritmi". Intl. J. Adaptiv boshqarish va signallarni qayta ishlash. 16 (10): 703–707. doi:10.1002 / acs.718.
  22. ^ Dastlab W. T. Cochran-dagi Stokhamga tegishli va boshq., Furye tez o'zgarishi nima?, Proc. IEEE jild 55, 1664–1674 (1967).
  23. ^ a b P. N. Svartstrauber, Vektorli kompyuterlar uchun FFT algoritmlari, Parallel hisoblash jild 1, 45-63 (1984).
  24. ^ Swarztrauber, P. N. (1982). "FFTlarni vektorlashtirish". Rodrigue, G. (tahr.) Parallel hisoblashlar. Nyu-York: Academic Press. pp.51–83. ISBN 978-0-12-592101-5.
  25. ^ Pease, M. C. (1968). "Parallel ishlov berish uchun tezkor Furye konvertatsiyasini moslashtirish". J. ACM. 15 (2): 252–264. doi:10.1145/321450.321457. S2CID 14610645.
  26. ^ Frigo, Matteo; Jonson, Stiven G. "FFTW". Bepul (GPLCooley-Tukey algoritmidan foydalangan holda ixtiyoriy o'lchamdagi bir yoki bir nechta o'lchamdagi diskret Furye konvertatsiyasini hisoblash uchun C kutubxonasi.
  27. ^ Jonson, X. V.; Burrus, S. S. (1984). "O'z o'rnida radix-2 FFT". Proc. ICASSP: 28A.2.1-28A.2.4.
  28. ^ Temperton, C. (1991). "O'z-o'zini saralash joyida tezkor Furye konvertatsiyasi". Ilmiy va statistik hisoblash bo'yicha SIAM jurnali. 12 (4): 808–823. doi:10.1137/0912043.
  29. ^ Qian, Z .; Lu, C .; An, M.; Tolimieri, R. (1994). "FFT algoritmini minimal ish maydoni bilan o'z-o'zini saralash". IEEE Trans. ASSP. 52 (10): 2835–2836. Bibcode:1994ITSP ... 42.2835Q. doi:10.1109/78.324749.
  30. ^ Hegland, M. (1994). "Vektorli va parallel ishlov berish uchun mos bo'lgan o'z-o'zini saralash bo'yicha tezkor Fourier konvertatsiya algoritmi". Numerische Mathematik. 68 (4): 507–547. CiteSeerX 10.1.1.54.5659. doi:10.1007 / s002110050074. S2CID 121258187.

Tashqi havolalar