Rozklad složené vlny
Diskrétní Fourierova transformace - příklady ve zdrojovém kódu
 23. listopadu 2022  Dr. Zdeněk Moravčík
 
 

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.

 
 
Shlédnout video přes YouTube:
 
Shlédnout video přes IPFS: /ipfs/QmNr8yo7rpoSTNXHkr2o2jQtdqY6HUbqbZBCcb3i9D1tRS
 
 
Klíčová slova: matematika, algoritmus, DFT, Fourierova transformace, Joseph Fourier, složená vlna, rozklad složené vlny
 
 
<< ZPĚT