Vetsina ukazkovych skriptu pro FFT se rozsype kdyz zvedavy ctenar vyzkousi signal s lichym poctem prvku. Ocenuju ze radek "f = fft(t)[1:len(t)//2]" pouzije // aby se predeslo desetinnemu cislu.
Dalsi zakernost je vypocet spravne amplitudy a hodnoty 'stejnosmerne' slozky signalu ve vsech pripadech. A v nekterych prikladech vidam ze dokonce priradi stejnosmerne slozce fazi.
Taky zobrazovani fazovych hodnot slozek signalu je zakerne, ve vetsine pripadu autor zobrazi graf se vsim fazovym sumem a spokoji se s tim, aniz by upozornil ze v realu maji vyznam jen hodnoty pro jednotlive slozky signalu.
mozna nejde jen o lichy pocet prvku ale o pocet, ktery neni mocninou dvou. Pak ten algoritmus pro vypocet asi doplnuje nuly az na mocninu dvou a to ovlivni spektrum
Jen pro matematicke upresneni. V teorii 1D signalove analyzy rozlisujeme ctyri zakladni varianty Fourierova rozkladu/transformace, a to podle toho, zda je signal v casove domene spojity nebo diskretni a zda je v casove domene omezeny nebo neomezeny:
A. Spojity, neomezeny -> Fourierova transformace (Fourier Transform, FT)
B. Spojity, omezeny -> Fourierova rada (Fouries Series, FS)
C. Diskretni, neomezeny -> Fourierova transformace diskretni v case (Discrete Time Fourier Transform, DTFT)
D. Diskretni, omezeny -> diskretni Fourierova transformace (Discrete Fourier Transform, DFT)
Tomu v kmitoctove domene odpovida prislusny charakter vysledku, tedy neomezenost (signaly spojite v case) nebo omezenost (diskretni v case) ve spektru a spojitost (neomezeno v cas. domene) nebo diskretnost (omezenost v cas. domene) spektra.
Pri pocitacovem zpracovani signalu jsme schopni zpracovat pouze omezene mnozstvi vzorku signalu, a tedy korektne vypocitat pouze posledni variantu - diskretni Fourierovu transformaci (DFT). Snaha o vypocet variant A, B a C nad obecnym signalem vede na zvysovani poctu vzorku, jejich zahustovani, nebo vyuziti nejake zname vlastnosti signalu (periodicita, omezenost spektra shora) popr. jejich kombinace, ale vzdy se ve vysledku jedna o aproximativni vypocet pomoci DFT.
Korektnost diskretizace v casove domene (ADC) se snazime zajistit predzpracovanim analogoveho signalu (filtrace -> tj. zamezeni aliasingu, vzorkovaci teorem atd.), omezeni v casove oblasti se zase snazime napravit vhodnou volbou vyrezoveho okna, kdy na jedne strane proste vyriznuti 'obdelnikem' muze zpusobit prosakovani mezi spektralnimi carami az do urovne -13 dB (sin(x)/x), naopak jina okna (Kaiser-Bessel, Harrisova okna,...) mohou potlacit postranni laloky spektralnich obrazu oken az o mnoho desitek dB ovsem za cenu 'rozliti' puvodni spektralni cary do nekolika sousednich car.
Rychla Fourierova transformace (Fast Fourier Transform, FFT) je pouze algoritmus, jak provest vypocet DFT rychleji, tj. s pomoci mensiho poctu nasobeni a scitani (tedy efektivneji, nez jak je naznaceno v prikladu vypoctu zde v clanku). Poprve ho pred cca 200 lety objevil C. F Gauss a znovu objevili v roce 1964 Cooley&Tukey (manuscript zde: https://web.stanford.edu/class/cme324/classics/cooley-tukey.pdf).
Oblibena (a nejefektivnejsi) specialni varianta FFT je pocitana nad poctem 2^N vzorku, ale obecnejsi varianta je zalozena na rozkladu N = n*m, kde je treba provest n DFT nad m vzorky (princip lze retezit, coz u 2^N vede az k vypoctovemu primitivu nad dvema vzorky - znamemu motylku z vysokoskolskych skript). V pripade prvociselnych poctu vzorku se pak uchylujeme k vypoctu pomoci cyklicke konvoluce.
Díky za doplnění.
Já jsem chtěl ještě v článku vypíchnout praktické rozdíly mezi FFT a DCT, vlastně už jsem se k tomu nedostal (ale možná je to trošku zřejmé z výsledků).