Video obsahuje dva příklady výpočtu diskrétní Fourierovy transformace prezentované formou zdrojového kódu.
Video si neklade za cíl vysvětlovat principy Fourierovy transformace, ale pouze tento algoritmus demonstrovat na příkladech ve zdrojovém kódu. Fourierova transformace, by se správně měla nazývat algoritmus rozkladu složené vlny na jednotlivé sinusoidy, nicméně zůstanu v tomto videu u tradičního názvu Fourierova transformace.
Samotné vysvětlení podstaty algoritmu Fourierovy transformace vyžaduje samostatné video.
První příklad zdrojového kódu používá k výpočtu komplexní čísla.
Druhý příklad je identický, ale výpočet je prováděn s použitím reálných čísel.
Výpočet se děje pro jednoduchost na vzorku 8 vstupních dat. Inicializace vstupní proměnné daty není součástí příkladu a je třeba si ji do zdrojového kódu doplnit.
Poznámka: uvedené příklady se nehodí pro výpočet tzv. zpětné Fourierovy transformace. Pro zpětnou Fourierovu transformaci je nutné zdrojový kód upravit.
00:00 – URL odkazy tohoto videa na webové stránky v QR-kódech
00:07 – Darujte kryptoměnu a podpořte moje videa
00:14 – Začátek videa
01:39 – První příklad ve zdrojovém kódu
04:06 – Druhý příklad ve zdrojovém kódu
05:36 – Mozkové algoritmy (trailer)
05:46 - Copyright & URL odkaz na webovou stránku autora v QR-kódu
05:50 – Autorova doporučená videa (dostupné pouze na platformě YouTube)
Následují oba zdrojové kódy v textové podobě, aby je bylo možné snadno zkopírovat:
=====================================================
(*
Příklad diskrétní Fourierovy transformace číslo 1
Popis: Výpočet diskrétní Fourierovy transformace (DFT) s použitím komplexních čísel pro vstupní data o délce 8.
*)
MODULE dft_priklad1;
IMPORT math;
VAR data: ARRAY 8 OF REAL; (* Poznámka: inicializace této proměnné vstupními daty není součástí příkladu *)
vysledek: ARRAY 8 OF COMPLEX; (* Zde budou po skončení výpočtu výstupní data *)
c: COMPLEX;
uhel: REAL;
FOR i := 0 TO 7 DO
uhel := 2 * math.pi * i / 8; (* úhel v radiánech *)
FOR j := 0 TO 7 DO
RE(c) := math.cos(j*uhel);
IM(c) := math.sin(j*uhel);
vysledek[i] := vysledek[i] + data[j] * c;
END
END
END dft_priklad1.
=====================================================
(*
Příklad diskrétní Fourierovy transformace číslo 2
Popis: Výpočet diskrétní Fourierovy transformace (DFT) s použitím reálných čísel pro vstupní data o délce 8.
*)
MODULE dft_priklad2;
IMPORT math;
VAR data: ARRAY 8 OF REAL; (* Poznámka: inicializace této proměnné vstupními daty není součástí příkladu *)
re, im: ARRAY 8 OF REAL; (* Zde budou po skončení výpočtu výstupní data *)
uhel: REAL; (* úhel v radiánech *)
FOR i := 0 TO 7 DO
uhel := 2 * math.pi * i / 8; (* úhel v radiánech *)
FOR j := 0 TO 7 DO
re[i] := re[i] + data[j] * math.cos(j*uhel);
im[i] := im[i] + data[j] * math.sin(j*uhel);
END
END
END dft_priklad2.