Přeskočit na obsah
coden

Signál a vzorkování: proč platí Nyquistův teorém

Co je signál, vzorkování a vzorkovací frekvence, aliasing a falešné frekvence, Nyquistův–Shannonův teorém a rekonstrukce funkcí sinc, antialiasingový filtr a kvantizace na bity.

12 minut Matěj Žalmánek 2026-10-16

Série Základy AI Díl 56 z 83
  1. Mapa umělé inteligence: co je co a jak to do sebe zapadá
  2. Stručná historie umělé inteligence: od Turinga po jazykové modely
  3. Data, model, trénink, inference: základní pojmy na jednom příkladu
  4. Jak číst matematický zápis: symboly, indexy, sumy a kvantifikátory
  5. Množiny a relace: stavebnice, ze které se skládají definice v AI
  6. Funkce a zobrazení: proč je každý model v AI funkce
  7. Logika a důkazy: pravidla, podle kterých se v AI uvažuje
  8. Grafy a stromy: struktura, na které stojí hledání i neuronové sítě
  9. Lineární algebra pro strojové učení: vektory, matice a proč AI hlavně násobí
  10. Derivace, gradient a řetízkové pravidlo: jak model zjistí, kterým směrem se učit
  11. Gradientní sestup: jak se model učí
  12. Co je pravděpodobnost: od hodu kostkou ke Kolmogorovovým axiomům
  13. Podmíněná pravděpodobnost a Bayesova věta: jak změnit odhad, když se dozvíte něco nového
  14. Náhodná veličina a distribuční funkce: jedna funkce, která o rozdělení řekne všechno
  15. Funkce hustoty a pravděpodobnostní funkce: proč má spojitá veličina v bodě pravděpodobnost nula
  16. Střední hodnota, rozptyl a kovariance: kde rozdělení leží, jak je široké a co s čím souvisí
  17. Přehled pravděpodobnostních rozdělení: Bernoulli, binomické, Poisson, rovnoměrné, normální a exponenciální
  18. Zákon velkých čísel a centrální limitní věta: proč se průměry chovají tak předvídatelně
  19. Statistika a odhady parametrů: maximální věrohodnost, MAP a intervaly spolehlivosti
  20. Teorie informace: entropie, křížová entropie a KL divergence — odkud se berou ztrátové funkce
  21. Prohledávání stavového prostoru: BFS, DFS, UCS a A* s animacemi
  22. Hry a protivník: minimax, alfa-beta ořezávání a Monte Carlo tree search
  23. Splňování omezujících podmínek: backtracking, propagace omezení a AC-3 na sudoku a mapě krajů
  24. Logika a znalostní systémy: dopředné a zpětné řetězení, rezoluce a expertní systémy
  25. Plánování: STRIPS, svět kostek, heuristiky z relaxace a plánování v AI agentech
  26. Lokální hledání a simulované žíhání: obchodní cestující přes krajská města
  27. Genetické algoritmy: populace, křížení, mutace a výběr na batohu na výlet
  28. Evoluční strategie a genetické programování: od pravidla jedné pětiny po Keplerův zákon
  29. Optimalizace mravenčí kolonií: jak feromonová stopa najde krátkou cestu
  30. Optimalizace hejnem částic: setrvačnost, vlastní zkušenost a zkušenost hejna
  31. Neuroevoluce: evoluce vah i tvaru neuronových sítí a algoritmus NEAT
  32. Fuzzy množiny a funkce příslušnosti: jak zapsat „trochu teplo“
  33. Fuzzy logika a pravděpodobnost: proč „trochu teplo“ neznamená „pravděpodobně teplo“
  34. Fuzzy logika: t-normy, implikace a pravidla KDYŽ–PAK
  35. Fuzzy řízení: Mamdani a Sugeno od ventilátoru po kyvadlo na vozíku
  36. Fuzzy shlukování: algoritmus fuzzy c-means a body mezi shluky
  37. Neuro-fuzzy systémy (ANFIS): fuzzy pravidla, která se učí z dat
  38. Markovovy řetězce: přechodová matice, stacionární rozdělení a PageRank
  39. Skryté Markovovy modely: Viterbiho algoritmus a nepoctivé kasino
  40. Bayesovské sítě: proč je tráva mokrá a co z toho plyne pro postřikovač
  41. Kalmanův filtr: jak z nepřesných měření odhadnout, kde auto je a jak rychle jede
  42. Druhy strojového učení: s učitelem, bez učitele, s částečným učitelem a další
  43. Přeučení a regularizace: proč model, který zná data nazpaměť, selže
  44. Vyhodnocení modelu: křížová validace, F1 a křivka ROC
  45. Shlukování a snížení dimenze: k-means, PCA a t-SNE
  46. Klasifikace a regrese: dvě úlohy učení s učitelem
  47. Lineární regrese: nejmenší čtverce geometricky i maticově
  48. Polynomiální a nelineární regrese: jak přímku ohnout
  49. Logistická regrese: sigmoida, šance a křížová entropie
  50. Vícetřídní klasifikace a softmax: od dvou tříd k mnoha
  51. Naivní Bayesův klasifikátor: spamový filtr, který funguje lépe, než by měl
  52. Ztrátové funkce: co přesně model minimalizuje
  53. Rozhodovací stromy a k nejbližších sousedů: modely bez vzorců
  54. Ansámbly: náhodný les a gradient boosting
  55. SVM a jádrový trik: nejširší hranice a jak ji ohnout
  56. Signál a vzorkování: proč platí Nyquistův teorém
  57. Fourierova transformace: rozklad signálu na frekvence
  58. Filtry a konvoluce: vyhlazení, hrany a odstranění šumu
  59. Zvuk a řeč: spektrogram, melová škála a MFCC
  60. Obraz jako signál: pixely, barvy, konvoluce a hrany
  61. Perceptron a umělý neuron: nejjednodušší neuronová síť a co neumí
  62. Neuronová síť od nuly: zpětné šíření chyby krok za krokem
  63. Aktivace, inicializace a normalizace: drobnosti, na kterých hluboká síť stojí
  64. Konvoluční sítě: jak síť poznává obrázky
  65. Rekurentní sítě: paměť pro posloupnosti a mizející gradient
  66. LSTM a GRU: brány, které rozhodují, co si síť zapamatuje
  67. Autoenkodéry: síť, která se učí data stlačit a zase rozbalit
  68. Embeddingy a word2vec: jak se slovo stane vektorem
  69. Mechanismus pozornosti: jak se model naučí, kam se dívat
  70. Transformery a velké jazykové modely: architektura krok za krokem
  71. Tokenizace: jak se text rozseká na kousky pro model
  72. Předtrénování a škálování: proč větší model a víc dat funguje
  73. Doladění a RLHF: jak se z doplňovače textu stane asistent
  74. Prompty, kontext a RAG: jak modelu dát správné informace
  75. Variační autoenkodéry (VAE): nové obrázky ze spojitého latentního prostoru
  76. Generativní adversariální sítě (GAN): padělatel proti detektivovi
  77. Difúzní modely: jak se z čistého šumu stane obrázek
  78. Markovovy rozhodovací procesy: stavy, akce, odměny a Bellmanovy rovnice
  79. Q-learning a DQN: učení hodnoty akcí od tabulky po neuronovou síť
  80. Policy gradient a PPO: učení přímo strategie
  81. Jak funguje AI agent: jazykový model ve smyčce s nástroji
  82. Programování s AI agenty: zadání, testy a kontrola
  83. Vyhodnocení a bezpečnost AI systémů: jak měřit a jak hlídat

Celá osnova série 83 z 83 témat hotovo

Co si odnesete
  • Jak se ze spojitého signálu stane řada čísel a co je vzorkovací frekvence.
  • Proč příliš řídké vzorkování vyrobí falešnou frekvenci a jak se tomu brání.
  • Co přesně říká Nyquistův–Shannonův teorém a co přidává kvantizace.

Co se hodí znát předem: Funkce a zobrazení: proč je každý model v AI funkce

Mikrofon v telefonu zachytí tlak vzduchu, který se mění plynule, v každém okamžiku. Počítač ale umí uložit jen konečně mnoho čísel. Jak z plynulé vlny udělat řadu čísel — a nepřijít přitom o nic důležitého? Odpověď dal v roce 1949 Claude Shannon a je překvapivě přesná: když měříte dost často, neztratíte vůbec nic. Když málo často, dostanete něco horšího než ztrátu — falešný signál, který tam nikdy nebyl. Tímhle dílem začíná řada o zpracování signálů: zvuku, obrazu a dat ze senzorů, ze kterých se učí rozpoznávání řeči i počítačové vidění.

Navazuje na díl Funkce a zobrazení.

1. Co je signál

Definice — signál, sinusovka, frekvence

Nechť I ⊆ ℝ je interval časů (v sekundách; může to být i celé ℝ). Spojitý signál je funkce x : I → ℝ; hodnota x(t) je velikost sledované veličiny (tlak vzduchu, napětí, jas) v okamžiku t ∈ I. Diskrétní signál je posloupnost x : ℤ → ℝ (nebo jen x : {0, 1, …, N − 1} → ℝ), n ↦ x[n] — hodnoty má jen v oddělených okamžicích očíslovaných celým indexem n. Místo času může být nezávislou proměnnou i poloha v prostoru.

Nechť A > 0, f ≥ 0 a φ ∈ ℝ. Sinusovka s amplitudou A, frekvencí f a fází φ je spojitý signál x : ℝ → ℝ,

x(t) = A sin(2πft + φ),

kde t je v sekundách, f v hertzích (1 Hz = 1 kmit za sekundu) a φ v radiánech. Pro f > 0 je perioda T = 1/f nejmenší kladné číslo, pro které x(t + T) = x(t) pro všechna t ∈ ℝ. Sinusovka tedy kmitá mezi −A a A a za každou sekundu vykoná právě f celých kmitů.

Stejný předpis dává smysl i pro záporné f: protože sin(−u) = −sin u, je A sin(2πft + φ) = −A sin(2π|f|t − φ), tedy obrácená sinusovka s frekvencí |f|.

Laicky řečeno

Komorní a, podle kterého se ladí nástroje, je sinusovka s frekvencí 440 Hz: vzduch se 440krát za sekundu zhustí a zředí. Amplituda je hlasitost, frekvence výška tónu. Skutečné zvuky jsou směsi mnoha sinusovek naráz — o tom, jak je rozplést, bude další díl o Fourierově transformaci. Signálem je ale i teplota během dne, tep srdce na EKG nebo jas pixelů podél řádku fotky.

x(t) = A sin(2πft + φ)

A
sinus sám kmitá jen mezi −1 a 1; amplituda ho natáhne na skutečný rozkmit veličiny (hlasitost, výchylku membrány)
2π
sinus se opakuje po 2π radiánech. Násobek 2π zařídí, že za jednu sekundu proběhne právě f celých kmitů — bez něj by f nebyla frekvence v hertzích, ale v radiánech za sekundu
f
frekvence: kolik kmitů za sekundu. Délka jednoho kmitu (perioda) je T = 1/f
φ
fáze posune vlnu v čase. Dvě sinusovky se stejnou frekvencí, které začaly v jiný okamžik, se liší jen v φ
Komorní a: f = 440 Hz, perioda T = 1/440 s ≈ 2,27 ms.

2. Vzorkování

Definice — vzorkování a vzorkovací frekvence

Nechť x : ℝ → ℝ je spojitý signál a fs > 0 je vzorkovací frekvence (počet vzorků za sekundu, v Hz). Její převrácená hodnota Ts = 1/fs je vzorkovací perioda. Vzorkování je přiřazení diskrétního signálu — posloupnosti vzorků

x[n] = x(nTs) = x(n/fs),   n ∈ ℤ

(skutečný záznam je konečný: n = 0, 1, …, N − 1). Vzorek x[n] je tedy hodnota signálu v okamžiku nTs a mezi těmito okamžiky signál neměříme.

Laicky řečeno

Je to jako fotit tanečníka stroboskopem: místo plynulého pohybu máme sérii snímků. Otázka je, kolik snímků za sekundu stačí, abychom z nich pohyb poznali správně.

Mezi dvěma vzorky uplyne vzorkovací perioda Ts = 1/fs: u CD (44,1 kHz) je to 22,7 µs, u modelů řeči (16 kHz) 62,5 µs. Když dosadíme sinusovku, vyjde vzorec, na kterém stojí celý zbytek dílu:

x[n] = A sin(2πf · n/fs + φ) = A sin(2π · f/fs · n + φ)

x[n]
n-tý vzorek (v obrázcích modré body); hranaté závorky říkají, že index je celé číslo — mezi vzorky nic není
n/fs
okamžik n-tého měření v sekundách, n · Ts. Vzorkování neudělá nic jiného, než že do spojité funkce dosadí jen tyhle časy
f/fs
kolik kmitů připadne na jeden vzorek. Po vzorkování zbude jen tenhle podíl — samotné f ani fs ze vzorků vyčíst nejde. Proto může 9 Hz při 10 Hz vypadat stejně jako −1 Hz
Příklad — sinusovka 2 Hz vzorkovaná 8krát za sekundu

f/fs = 2/8 = 1/4 kmitu na vzorek, takže x[n] = sin(2π · 1/4 · n) = sin(π/2 · n) (barvy podle vzorce výše):

n = 0, 1, 2, 3, 4:   t = n/8 = 0; 0,125; 0,25; 0,375; 0,5 s   →   x[n] = 0, 1, 0, −1, 0

Na kmit připadají čtyři vzorky: nula, vrchol, nula, důl. Při fs = 3 Hz je podíl 2/3 kmitu na vzorek a vzorky vyjdou 0; −0,866; 0,866; 0 — přesně jako u sinusovky −1 Hz (podíl −1/3), protože 2/3 a −1/3 se liší o celý kmit.

fs = 20 Hz fs = 8 Hz fs = 3 Hz 00,250,50,751 čas t (s) výchylka (bez jednotky)
Sinusovka 2 Hz vzorkovaná třemi frekvencemi; čárkovaně, co vzorky ukazují skutečný signál zdánlivý signál čas 0–1 s

Dvacet vzorků za sekundu sinusovku jasně vykreslí. Osm vzorků stačí taky: nejsou hezké, ale jiná sinusovka do 4 Hz jimi neprochází. Při třech vzorcích za sekundu se ale děje něco zvláštního: vzorky leží přesně na sinusovce s frekvencí 1 Hz. Z vzorků samotných nejde poznat, že signál měl 2 Hz.

3. Aliasing: falešná frekvence

Definice — aliasing

Nechť fs > 0 je vzorkovací frekvence. Podle věty níže mají sinusovky se stejnou amplitudou a fází a s frekvencemi f a f + kfs, kde k ∈ ℤ, stejné vzorky. Pro frekvenci f ∈ ℝ definujeme

k = round(f/fs) ∈ ℤ   (nejbližší celé číslo)   a   fa = |f − kfs| ∈ [0, fs/2].

Číslo fa je zdánlivá frekvence: nejmenší nezáporná frekvence, jejíž sinusovka (případně obrácená) má stejné vzorky jako sinusovka s frekvencí f. Aliasing nastane, právě když fa ≠ |f|, tj. právě když |f| > fs/2: sinusovka se po vzorkování jeví jako sinusovka s jinou, nižší frekvencí fa.

Laicky řečeno

Ve westernech se kola dostavníku občas točí pozpátku. Kamera točí 24 snímků za sekundu, a když se kolo mezi dvěma snímky otočí skoro o celou paprskovou mezeru, vypadá to, jako by se o kousek vrátilo. Rychlé otáčení se v záznamu převlékne za pomalé — a dokonce opačné.

9 Hz, fs = 10 Hz 00,250,50,751 čas t (s) výchylka (bez jednotky)
Sinusovka 9 Hz vzorkovaná 10krát za sekundu má stejné vzorky jako sinusovka 1 Hz 9 Hz 1 Hz (obrácená) čas 0–1 s

Vzorky devítihertzové sinusovky se od vzorků (obrácené) jednohertzové liší jen v zaokrouhlovací chybě počítače, na patnáctém desetinném místě. Obecně: 7 Hz vzorkovaných dvanáctkrát za sekundu vypadá jako 5 Hz; ultrazvuk 25 kHz zaznamenaný frekvencí CD (44,1 kHz) se objeví jako slyšitelný tón 19,1 kHz. Aliasing nejde dodatečně opravit — ze vzorků se nedá poznat, která z možných frekvencí to byla.

Věta — frekvence lišící se o násobek fs mají stejné vzorky

Nechť f ∈ ℝ, φ ∈ ℝ a fs > 0. Pak pro každé k ∈ ℤ a každé n ∈ ℤ platí

sin(2π(f + kfs) · n/fs + φ) = sin(2πf · n/fs + φ),

tj. sinusovky s frekvencemi f a f + kfs mají při vzorkování frekvencí fs stejné vzorky.

Důkaz. Roznásobíme: 2π(f + kfs) · n/fs = 2πf · n/fs + 2π · kn. Číslo kn je celé a sinus má periodu 2π, takže přičtení 2πkn hodnotu nezmění. ∎

Navíc sin(−u) = −sin(u): záporná frekvence je táž sinusovka obrácená (s fází posunutou o π). Proto se 9 Hz při 10 Hz převlékne za −1 Hz, tedy za obrácenou jednohertzovou.

fa = | f − kfs |,   k = round(f/fs)

fa
zdánlivá frekvence — ta, kterou ze vzorků „uvidíme“ (v obrázcích jantarová čárkovaná křivka). Vždy leží mezi 0 a fs/2
f
skutečná frekvence signálu
kfs
nejbližší celý násobek vzorkovací frekvence. Podle věty výše smíme od f odečíst libovolný násobek fs, vzorky se nezmění; nejbližší násobek dá nejpomalejší sinusovku, která vzorky vysvětlí — a tu oko (i rekonstrukce) zvolí
Absolutní hodnota je tam proto, že záporná frekvence je jen obrácená kladná: |−1 Hz| = 1 Hz.
Příklad — zdánlivé frekvence z textu
ffsf/fskf − kfsfa
2 Hz8 Hz0,2502 Hz2 Hz
2 Hz3 Hz0,671−1 Hz1 Hz
9 Hz10 Hz0,91−1 Hz1 Hz
7 Hz12 Hz0,581−5 Hz5 Hz
25 kHz44,1 kHz0,571−19,1 kHz19,1 kHz

Barvy odpovídají členům vzorce výše. Dokud je f/fs pod 0,5, vyjde k = 0 a frekvence se nezmění. Jakmile podíl překročí polovinu, zaokrouhlí se na 1 a frekvence se „zrcadlí“ kolem fs/2: čím výš nad ní skutečná frekvence je, tím níž se objeví.

4. Nyquistův–Shannonův teorém

Věta — vzorkovací teorém

Nechť B > 0. Spojitý signál x : ℝ → ℝ s konečnou energií (∫ x(t)2 dt < ∞) je frekvenčně omezený s mezí B, právě když jeho Fourierova transformace X(f) (viz díl Fourierova transformace) splňuje X(f) = 0 pro všechna |f| > B — signál neobsahuje žádné frekvence vyšší než B. Pro vzorkovací frekvenci fs > 0 se číslo fs/2 nazývá Nyquistova frekvence.

Věta (Nyquist, Shannon, Kotělnikov). Nechť x je frekvenčně omezený s mezí B, fs > 2B a x[n] = x(n/fs) pro n ∈ ℤ. Pak pro každé t ∈ ℝ platí

x(t) = ∑n=−∞∞ x[n] · sinc(fst − n)

(Whittakerova–Shannonova interpolace; funkce sinc je definovaná níže). Signál je tedy vzorky určený jednoznačně a přesně. Pro sinusovky a jejich konečné součty, které konečnou energii nemají, platí závěr také, pokud jsou všechny jejich frekvence ostře menší než fs/2.

Laicky řečeno

Na každý kmit nejvyšší frekvence potřebujete víc než dva vzorky — jeden „nahoře“ a jeden „dole“. Pak mezi vzorky nemůže být nic, co by vám uteklo: jediná hladká křivka bez vyšších frekvencí, která vzorky prochází, je ta skutečná. Rekonstrukce funkcí sinc ji najde: každý vzorek přispěje malou vlnkou, která je v jeho okamžiku 1 a ve všech ostatních vzorcích 0.

x(t) = ∑n x[n] · sinc(fst − n)

x(t)
zrekonstruovaný spojitý signál v libovolném okamžiku t, i mezi vzorky (v obrázku níže zelená křivka)
x[n]
naměřené vzorky — jediné, co máme. Každý slouží jako výška „vlnky“, kterou do součtu přispěje
fst − n
jak daleko je okamžik t od n-tého vzorku, měřeno v počtu vzorkovacích period. Díky tomu má každá vlnka střed ve svém vzorku a stejný tvar pro každé fs
sinc(…)
tvar vlnky: v čase vlastního vzorku 1, v časech všech ostatních vzorků 0 — takže součet prochází přesně všemi vzorky. Přitom neobsahuje žádnou frekvenci nad fs/2, takže součet také ne
Každý vzorek pošle vlnku sinc a jejich součet je jediná křivka bez frekvencí nad fs/2, která všemi vzorky prochází.
Definice — funkce sinc a proč prochází vzorky

Normovaná funkce sinc je funkce sinc : ℝ → ℝ,

sinc(u) = sin(πu)/πu   pro u ≠ 0,   sinc(0) = 1.

Hodnota v nule je limita zlomku pro u → 0, takže sinc je spojitá.

Věta. Pro každé m ∈ ℤ, m ≠ 0, je sinc(m) = 0. Důkaz: sin(πm) = 0 pro celé m a jmenovatel πm nulový není. ∎

Důsledek. Nechť fs > 0, (x[n])n ∈ ℤ jsou vzorky a x̂(t) = ∑n x[n] · sinc(fst − n), pokud řada konverguje. Pak x̂(m/fs) = x[m] pro každé m ∈ ℤ. Důkaz: v okamžiku t = m/fs je fst − n = m − n celé číslo, takže ze součtu zbude jediný nenulový člen n = m s váhou sinc(0) = 1. ∎

Mezi vzorky přispívají všechny: v polovině mezi dvěma vzorky má každý z nich váhu sinc(±0,5) = 2/π ≈ 0,637, další dva sinc(±1,5) ≈ −0,212 a tak dál se střídavým znaménkem a klesající velikostí (barvy podle vzorce výše).

def rekonstrukce(vzorky, fs, t):
    # vzorky[n] = x(n / fs) pro n = 0, 1, …, N−1
    soucet = 0
    for n, xn in enumerate(vzorky):
        u = fs * t - n                       # vzdálenost od n-tého vzorku ve vzorcích
        soucet += xn * (1 if u == 0 else sin(pi * u) / (pi * u))
    return soucet

Ve vzorci je součet přes všechna celá n, od minus do plus nekonečna. Skutečný záznam je konečný, a protože sinc klesá jen jako 1/u, chybějící vzdálené vzorky trochu chybí všude. Proto i nad Nyquistovou mezí vyjde malá nenulová chyba.

fs = 20 Hz (nad 2 · 7 Hz) fs = 12 Hz (pod 2 · 7 Hz) 00,250,50,751 čas t (s) výchylka (bez jednotky)
Signál 3 Hz + 7 Hz a jeho rekonstrukce ze vzorků (zeleně) skutečný signál čas 0–1 s

Signál je součet tónů 3 Hz a 7 Hz; jeho efektivní hodnota je 0,79. Při vzorkování 20 Hz (nad dvojnásobkem 7 Hz) se rekonstrukce od originálu liší v průměru o 0,0007 — a i tahle drobnost jde jen na vrub toho, že jsme sčítali konečně mnoho vzorků. Při 16 Hz je chyba 0,002. Při 12 Hz je 7 Hz nad Nyquistovou frekvencí (6 Hz), převlékne se za 5 Hz a chyba rekonstrukce vyskočí na 0,50. Přesně na hranici, při 14 Hz, je 0,29 — teorém vyžaduje ostře víc než dvojnásobek.

Definice — efektivní hodnota a chyba rekonstrukce

Nechť x : ℝ → ℝ je signál, N ≥ 1 a t1 < … < tN jsou okamžiky husté rovnoměrné mřížky zkoumaného intervalu. Efektivní hodnota (RMS, root mean square) signálu x na této mřížce je odmocnina z průměru čtverců

RMS(x) = √1/N ∑i=1N x(ti)2.

Nechť x̂ : ℝ → ℝ je rekonstrukce signálu x. Chyba rekonstrukce je efektivní hodnota rozdílu

RMS(x̂ − x) = √1/N ∑i=1N (x̂(ti) − x(ti))2;

v textu ji počítáme na N = 801 rovnoměrně rozložených bodech intervalu [0, 2] s.

Sinusovka s amplitudou A má efektivní hodnotu A/√2 (průměr sin2 přes celé kmity je 1/2), a efektivní hodnoty dvou sinusovek s různými frekvencemi se sčítají „v kvadrátu“.

signál sin(2π · 3t) + 0,5 sin(2π · 7t + 0,6):   RMS = √12/2 + 0,52/2 = √0,5 + 0,125 = √0,625 = 0,79

chyba při 12 Hz vůči velikosti signálu: 0,50/0,79 = 63 %   ·   při 20 Hz: 0,0007/0,79 = 0,09 %

Příklad — proč přesně dvojnásobek nestačí

Sinusovka sin(2π · 7t) vzorkovaná přesně 14krát za sekundu: f/fs = 7/14 = 1/2 a (barvy podle vzorce vzorkování výše)

x[n] = sin(2π · 1/2 · n) = sin(πn) = 0   pro každé n

Všechny vzorky padnou do průchodů nulou a signál ze záznamu úplně zmizí — nejde ho odlišit od ticha. S jinou fází by vzorky nulové nebyly, ale ze vzorků by nešlo poznat amplitudu: sin(πn + φ) = (−1)n sin φ, takže amplituda A a fáze φ dávají tytéž vzorky jako jakákoli dvojice se stejným A sin φ. Proto teorém chce fs > 2B, ne ≥.

Teorém nese jména Harryho Nyquista, který v roce 1928 odvodil, kolik impulzů za sekundu přenese telegrafní linka, a Clauda Shannona, který ho v roce 1949 dokázal v dnešní podobě. Nezávisle na nich ho v roce 1933 publikoval Vladimir Kotělnikov.

5. Než začnete vzorkovat: antialiasingový filtr

Teorém má předpoklad: signál nesmí obsahovat frekvence nad fs/2. Skutečný svět ho nedodrží — v místnosti je vždycky nějaký vysokofrekvenční šum. Proto každý převodník před vzorkováním pustí signál přes antialiasingový filtr, který vysoké frekvence potlačí. Vzorkovací frekvence se pak volí s rezervou:

Definice — dolní propust a přechodové pásmo

Nechť fc > 0. Ideální dolní propust s mezní frekvencí fc je lineární systém (součet signálů zpracuje po složkách), který

  1. každou sinusovku A sin(2πft + φ) s |f| < fc propustí beze změny,
  2. každou sinusovku s |f| > fc převede na nulový signál.

Nechť fs > 0 je vzorkovací frekvence. Antialiasingový filtr je dolní propust zařazená před vzorkování, s mezní frekvencí fc ≤ fs/2. Skutečný filtr neumí utnout ostře; jeho přechodové pásmo je interval [fp, fz], kde fp je nejvyšší frekvence, kterou ještě propouští (téměř) beze změny, a fz nejnižší frekvence, od které výš ji už dostatečně potlačí. Aby nevznikl aliasing, musí platit fz ≤ fs/2.

CD: slyšitelné pásmo do B = 20 kHz,   2B = 40 kHz < 44,1 kHz ✓

přechodové pásmo: od 20 kHz do fs/2 = 44,1/2 kHz = 22,05 kHz, tedy 2,05 kHz

Čím užší přechodové pásmo, tím strmější (a dražší, delší) filtr. Proto se vzorkuje o kus rychleji, než by teorém vyžadoval.

Použitívzorkovací frekvenceproč
CD44,1 kHzčlověk slyší nejvýš asi 20 kHz; 2,05 kHz rezerva pro filtr
klasický telefon8 kHzřeč se přenáší jen do 3,4 kHz
modely rozpoznávání řečiobvykle 16 kHzhlavní informace řeči leží pod 8 kHz
film24 snímků/splynulý pohyb pro oko; rychlé otáčení se přesto „aliasuje“

6. Kvantizace: kolik bitů na vzorek

Vzorkováním se diskrétní stal čas. Hodnoty jsou ale pořád reálná čísla s nekonečně mnoha desetinnými místy. Druhý krok převodu je zaokrouhlit je.

Definice — kvantizace a odstup signálu od šumu

Nechť b ≥ 1 je počet bitů a hodnoty signálu leží v rozsahu [−1, 1]. Nechť q0 < q1 < … < q2b−1 jsou povolené úrovně (konkrétní volba v další definici). Kvantizace s b bity je zobrazení

Qb : [−1, 1] → {q0, …, q2b−1},   x ↦ ta úroveň qi, pro kterou je |qi − x| nejmenší.

Kvantizační šum (chyba) vzorku x je e = Qb(x) − x. Pro signál se vzorky x[n] je výkon signálu Ps průměr čtverců x[n]2 a výkon šumu Pš průměr čtverců chyb. Odstup signálu od šumu je

SNR = 10 log10 Ps/Pš dB

(decibel viz další definice). Pro sinusovku přes celý rozsah vychází SNR ≈ 6,02 · b + 1,76 dB (odvození níže): každý bit navíc přidá asi 6 dB.

Laicky řečeno

Je to jako měřit pravítkem s dílky: hodnota mezi dílky se zaokrouhlí. Se třemi bity jsou dílky jen osm a zvuk je zrnitý. Šestnáct bitů (CD) znamená 65 536 dílků. Decibely jsou logaritmická míra: 6 dB je dvojnásobek amplitudy, takže každý bit zmenší šum na polovinu.

Definice — kvantizační krok a decibel

Nechť b ≥ 1. Rozsah [−1, 1] rozdělíme na 2b stejných intervalů o šířce kvantizačního kroku

Δ = 2/2b.

Pro vzorek x ∈ [−1, 1] je číslo jeho intervalu (kód)

i = min(⌊x + 1/Δ⌋, 2b − 1) ∈ {0, 1, …, 2b − 1}

(minimum ošetří jen krajní bod x = 1) a kvantovaná hodnota je střed tohoto intervalu, q = −1 + (i + ½) Δ. Úrovně jsou tedy středy intervalů a pro každé x ∈ [−1, 1] platí |q − x| ≤ Δ/2.

Nechť P1, P2 > 0 jsou výkony (průměry čtverců). Jejich poměr v decibelech je

10 log10 P1/P2 dB.

Výkon roste se čtvercem amplitudy, takže dvojnásobná amplituda je 10 log10 4 = 20 log10 2 ≈ 6,02 dB.

b = 3:   Δ = 2/8 = 0,25;   vzorek x = 0,3:   i = ⌊1,3/0,25⌋ = ⌊5,2⌋ = 5

q = −1 + 5,5 · 0,25 = 0,375,   chyba 0,375 − 0,3 = 0,075   (nejvýš může být 0,125)

Odkud se vezme vzorec 6,02 · b + 1,76? Je to podíl výkonu sinusovky a výkonu kvantizačního šumu v decibelech:

SNR = 10 log10 A2/2/Δ2/12 = 6,02 · b + 1,76 dB

A2/2
výkon signálu: průměr čtverce sinusovky. Pro sinusovku přes celý rozsah je A = 1 a výkon 1/2
Δ2/12
výkon kvantizačního šumu (v obrázku červená chyba). Když chyba „náhodně“ vyplňuje interval od −Δ/2 do Δ/2 rovnoměrně, je průměr jejího čtverce 1/Δ ∫−Δ/2Δ/2 e2 de = Δ2/12. Tenhle předpoklad u tří bitů platí jen zhruba
10 log10
převod poměru výkonů na decibely; logaritmus udělá z násobení sčítání, takže každý bit přičte stejný kus
6,02 · b
Δ = 2/2b, takže šum je úměrný 1/4b a 10 log10 4b = b · 6,02. Každý bit navíc rozpůlí krok a šum klesne na čtvrtinu výkonu
1,76
to, co zbude, když se dosadí A = 1 a Δ = 2/2b: 1/2/1/3 · 4b = 1,5 · 4b a 10 log10 1,5 ≈ 1,76. V čísle 1,5 = 1/2 · 3 je 1/2 výkon sinusovky a 3 pochází ze šumu: rozsah 2 dělený na kroky dá 22/12 = 1/3. Signál jiného tvaru (třeba obdélníkový s výkonem 1) by měl jinou konstantu
Pro 3 bity: Δ = 0,25, šum 0,252/12 = 0,005 21, SNR = 10 log10 0,5/0,005 21 = 19,8 dB.
01234567 kvantizační chyba 00,250,50,751 čas t (s) úroveň (kód 0–7) chyba (bez jednotky)
Kvantizace na 3 bity (8 úrovní) signál kvantovaný kvantizační chyba
Bitů na vzorekúrovníSNR změřenéSNR podle 6,02 b + 1,76
3819,1 dB19,8 dB
825649,7 dB49,9 dB
1665 53698,1 dB98,1 dB

U tří bitů se změřené číslo od vzorce trochu liší, protože vzorec předpokládá, že chyba je rovnoměrně rozložený šum, a při osmi úrovních je chyba ještě viditelně „schodovitá“. Od osmi bitů výš vzorec sedí. Vzorkování a kvantizace dohromady určují datový tok: CD má 44 100 vzorků × 16 bitů × 2 kanály = 1 411 200 bitů za sekundu, klasický telefon 8 000 × 8 = 64 000 bitů za sekundu.

7. Signály v umělé inteligenci

  • Řeč. Model pro rozpoznávání řeči dostane zvuk jako 16 000 čísel za sekundu. Většinou je ale nejdřív převede na spektrogram — o tom díl Zvuk a řeč.
  • Obraz. Fotka je dvourozměrný vzorkovaný signál: pixel je vzorek jasu. Aliasing tu vzniká taky — moaré na fotce košile s jemným proužkem.
  • Senzory. Akcelerometr v hodinkách, které poznají běh od chůze, vzorkuje typicky desítkykrát za sekundu; frekvence se volí podle toho, jak rychlé pohyby chceme zachytit.
  • Zmenšování. Když se obrázek pro neuronovou síť zmenší vynecháním pixelů, je to převzorkování — a bez rozmazání předem vznikne aliasing. Proto se před zmenšením obraz filtruje, stejně jako zvuk před vzorkováním.

8. Shrnutí

  • Signál je funkce času; vzorkování z něj bere hodnoty v pravidelných okamžicích n/fs.
  • Frekvence nad fs/2 se převléknou za nižší (aliasing): 9 Hz při 10 Hz vypadá jako 1 Hz, 7 Hz při 12 Hz jako 5 Hz.
  • Když je fs víc než dvojnásobek nejvyšší frekvence, dá se signál ze vzorků zrekonstruovat přesně: chyba 0,0007 při 20 Hz, 0,50 při 12 Hz.
  • Před vzorkováním se vysoké frekvence odfiltrují; CD vzorkuje 44,1 kHz, protože slyšíme do 20 kHz.
  • Kvantizace zaokrouhlí hodnoty; každý bit přidá asi 6 dB odstupu od šumu (16 bitů: 98,1 dB).

Chcete si to osahat? Nechte AI agenta vygenerovat zvukový soubor s tónem 15 kHz vzorkovaný frekvencí 44,1 kHz a pak stejný tón vzorkovaný 22,05 kHz — a poslechněte si, jaký tón uslyšíte místo něj.

Máte na to jiný názor? Napište na support@coden-app.com.

Agent na vašem počítači, ovládaný z telefonu