Základy zpracování signálu Jiří Krejsa, A2/710
[email protected]
K čemu vám to bude ? Cílem kurzu je seznámit posluchače se základy zpracování signálů, především s číslicovým zpracováním jednorozměrných signálů. Významnou část kurzu tvoří praktické úlohy realizované pomocí prostředí Matlab. Kde najdu další informace ? http://www.umt.fme.vutbr.cz/~ruja/vyuka/ZZS/zzs.html
Organizace kurzu (co, kdy, kde, proč) • Přednášky nejsou povinné, ale podle mě nemá cenu chodit na cvika, když nebude vědět co jsou to všechny ty podivné věci které po vás budu chtít. • Budeme v maximální míře používat Matlab, kdo ho neumí, tak na začátku prvních cvičení bude hyperrychlokurs. • Kdo chce trénovat doma, nechť (pokud je bohatý) si Matlab koupí (v žádném případě ho nesmí nikde uloupit), nebo si stáhne Octave, který je sice mírně řečeno méně dokonalý, ale svoje si odvede taky. • Budeme dělat jen jednorozměrné signály. Kdo chce zpracovávat obrázky, nechť chodí na kurz prof. Druckmüllera, je vynikající a profesor vás tam pustí, i když na kurz nepatříte. • Předpokládám že některé věci znáte, kromě používání Matlabu třeba komplexní čísla, základy programování (víte co je cyklus), nepřekvapí vás termín funkce, případně konkrétní funkce, např. kosinus. • Výuka bude na počítačovce, jinde to nemá smysl. Kalkulačky si nosit nemusíte, v Matlabu je.
Hodnocení (co mám dělat, abych byl já i můj vyučující spokojen) • Už jste velcí hoši, takže vás nebudu nutit učit se něco, co nechcete. Koneckonců jde o volitelný (povinně ) předmět. • Nicméně každý kdo chce absolvovat bez ztráty kytičky by měl rozumět přinejmenším termínům z následujícího kvízu (pokud už to všechno znáte (a ROZUMÍTE tomu), je pro vás tento kurz zbytečný a dám vám jinou práci) • No a taky si uděláme nějaký projekt, ideálně něco co se vám bude hodit do diplomky, do projektu na kterém již kutíte, ať to není zbytečná práce pro práci.
Minidotazník 1.
Co je to konvoluce a proč to není choulostivé slovo
2.
Co je to spektrum a dá se pít ?
3.
Kdo je to Bell
4.
Co je to deciBell a proč není ani červené, ani bílé.
5.
Co je to odezva na skok (jen žádné vtipné odpovědi prosím)
6.
Co je to superpozice (opět prosím žádné vtipné odpovědi)
7.
Co dělá filtr typu dolní propust
8.
Proč musíme vzorkovat rychleji než je nejvyšší frekvence v signálu
9.
Jak vypadá znak pro sumu, případně integrál
10.
Kdo to byl Gauss a proč o něm pořád všichni mluví
11.
Proč je centrální limitní teorém (věta) jen vznešený název pro vcelku jednoduchou věc
12.
Kolik váží spektrogram
13.
Co mají všichni s tím Fourierem
14.
Proč nemá horní propust nic společného s horníky ani s vězením
15.
Pokud bory šumí, šumí aditivně nebo impulzně ?
Literatura (aneb všechno je na netu ale kniha je kniha) No, na netu je vážně skoro všechno. Pro ty z vás kdo vládnou jazykem anglickým (všichni) doporučuji především: • Steven W. Smith: The Scientist and Engineer's Guide to Digital Signal Processing. Absolutně božská kniha ve které je všechno a nejsou předpokládány žádné (skoro) prerekvizity. Kurs se bude hodně odvíjet podle ní. K nahlédnutí online na adrese http://www.dspguide.com/ Pro ty kdo umí jen česky a mají rádi papír: • Zaplatílek K., Doňar B.: Matlab - začínáme se signály, BEN,Praha, 2006 (jen základní věci, teorie málo, praxe občas lehce nepraktická) • Jan. J.: Číslicová filtrace, analýza a restaurace signálů, VUT v Brně, 1997 (kdo to celé přečte a pochopí, ten na předmět nemusí chodit) No a pro ty kdo umí jen česky a papír rádi nemají, bych doporučil výborné materiály k přednáškám doc. Černockého z FITu (strýček Google vám s hledáním jistě pomůže)
Kde se používá zpracování signálu ? Všude ! Zpracování zvuku
• EKG • Komprese hlasu • Filtrace
Zpracování obrazu • • • • •
MRI CT Triky v Hollywoodu Komprese obrazu Obraz sluneční koróny
Průmysl
• Nedestruktivní testování • Signály ze zemětřesení
Vojáci
• Radar • Sonar • Zabezpečení komunikace
Zemětřesení ve Washingtonu D.C., 2010, záznam z observatoře cc 150 km od epicentra
EKG (chudák s arytmií) 0.4
0.6
0.3
0.4
0.2
0.2 0.1
0 0
-0.2 -0.1
-0.4
-0.2
-0.6
-0.3 -0.4
0
0.5
1
1.5
2
2.5
3
3.5 4
x 10
Časový záznam slova „signál“, řečeného mnou
-0.8
0
0.5
1
1.5
2
2.5
3
3.5 4
x 10
Časový záznam slova „sandál“, téhož řečníka
Sluneční koróna (prof. Druckmüller, 2010)
Příklad z naší domácnosti Moje děti hrají na xylofon a na píšťalku a pokoušejí se o tón A. Jak vypadá časový průběh signálu a je to vážně A ? Nahrajeme zvuk (k dispozici na netu jako zvuky01.zip) a zpracujeme v Matlabu: % ukazka spektra jednoho tonu z hudebniho nastroje %vycistim pamet clear all %nactu soubor [s, fs, nbits] = wavread('fletnaAstara.wav'); % zacatek rozumnych dat xstart = 7000; % fletnaA 3000, fletnaAstara 7000, xylofonC 2000, xylofonA je divnej xend = xstart + 2048; %vyberu rozumna data x = s(xstart:xend); figure subplot(2,2,1) % nakreslim casovy prubeh dat plot(x); title('Casovy prubeh signalu'); xlabel('vzorky [-]'); % kolik vzorku pouziju pro vypocet spektra (proc zrovna tohle cislo ?) N = 1024; Npul = N/2; Npul1 = Npul+1; Y = fft(x,N); Pyy = Y.* conj(Y) / N;
% staci do poloviny (zbytek je symetricky) f = fs*(0:Npul)/N; subplot(2,2,2) plot(f,Pyy(1:Npul1)) title('Výkonové spektrum') xlabel('Frekvence (Hz)') ylabel(''); % a jeste jeden obrazek, tentokrat v decibelech (je to lip videt) subplot(2,2,3) YY = 20*log10(abs(Y(1:Npul1))); plot(f,YY); title('Spektrum') xlabel('Frekvence (Hz)') ylabel('Spektrum [db]'); % a jeste vyrez, at je videt kde vlastne jsme subplot(2,2,4) plot(f(1:Npul/4),YY(1:Npul/4)); grid title('Spektrum') xlabel('Frekvence (Hz)') ylabel('Spektrum [db]');
Je to vážně A ? Špička je v 882,9 Hz. Co to je za tón ? Komorní A má 440 Hz. Není to teda nějaká blbost ? Poměr frekvencí tónů vzdálených o oktávu je 2:1. Tón o oktávu vyšší tedy dostaneme zdvojnásobením frekvence základního tónu. Příklad: komorní A (a’) má 440 Hz, tón o oktávu vyšší (a’’) má 880 Hz, tón o oktávu nižší (a) má 220 Hz. Takže je to opravdu A, ale dvoučárkové. Vyzkoušejte samostatně, i jiné tóny, např. C (c‘) má 523,2 Hz, c’’ má 1046 Hz. Ale je tam ještě spousta dalších frekvencí ! Co to je ???
Co je to signál Teta wikina:
Signál (z latinského signalis - dávat znamení) je optické, elektrické, elektromagnetické, akustické, mechanické, pneumatické, nebo hydraulické znamení, které má určitý význam. Hmmmm…. Je znamení, které nemá význam, ještě pořád znamení ? Jinak:
Signál je popis vztahu jednoho parametru vůči druhému. Hmmmm… je to dost obecně ? Možná až moc.
Je to zkrátka FUNKCE převádějící nezávislou proměnnou na nějakou hodnotu
Závislá / nezávislá proměnná: cokoliv: • Nezávislá proměnná –čas (není nutno !) o Napětí baterie v závislosti na čase o Délka mých vlasů v závislosti na čase • Nezávislá proměnná – něco jiného než čas o Hustota atmosféry v závislosti na nadmořské výšce o Hodnota koeficientu přestupu tepla v závislosti na teplotě o Tloušťka zemské kůry podél rovníku My budeme pracovat hlavně se signály proměnnými v čase. Kontrolní otázka, co třeba obrázek ? Je to signál ? Jaký ?
Druhy signálu Signálů je nekonečně mnoho. Dělíme je do několika skupin, ne proto, aby bylo na čem trápit studenty, ale protože jejich zpracování se pak významně liší. Podle spojitosti nezávislé proměnné (budeme používat čas, ale nemusí tomu tak obecně být): Signály se spojitým časem s ( t ) , t je definován v celém oboru reálných čísel, např. délka mých vlasů v závislosti na čase, definováno v libovolném okamžiku.
Signály s diskrétním časem s [ n ] , n je definováno v oboru přirozených čísel, např. délka mých vlasů každé pondělí ráno. s [ n ] je tedy posloupnost čísel.
Chyták: Znamená to že signál se spojitým časem je spojitý signál a signál s diskrétním časem je diskrétní signál ? Odpověď: jak kdy .
Zatím jsme neřešili z jakého oboru je závisle proměnná. Délka vlasů je jistě z oboru reálných čísel. Ale když ji chcete zapsat do počítače, bude to číslo zapsané jen s určitou přesností (máme k dispozici jen omezený počet bitů). Více později v kapitolce o vzorkování a kvantování. Reálné signály jsou většinou signály spojité, ale zpracováváme je diskrétně. Proč ?
Základní schéma zpracování signálu
Analogový vstup
Analogový Filtr (antialiasing)
AD převodník
Analogový výstup
Digitální výstup
Digitální vstup DIGITÁLNÍ ZPRACOVÁNÍ SIGNÁLU
DA převodník
Analogový Filtr (rekonstrukce)
Někdy není třeba
Máme co potřebujeme
Co je to tam za filtry ? Co dělá AD převodník ? Proč je tam na konci DA, není to překlep ? Proč vůbec zpracováváme digitálně ?
Proč zpracovávat digitálně ? Zpracování je nezávislé na „součástkách“, (zpracování je pořád stejné) tedy: o Nezávislé na teplotě o Nezávislé na tom kdy se zpracování provede (stárnutí součástek) o Odpadá „oživování“ (tolerance součástek) Počítače a speciální procesory jsou rychlejší a rychlejší, dá se zvládnout i složité zpracování Simulace = aplikace Na cvičeních budeme dělat všechno digitálně (kontrolní otázka: proč ?)
Druhy signálu – další hlediska Deterministické / náhodné signály U deterministického signálu vím v každém okamžiku (spojitém nebo diskrétním) kolik to je (přesnou = x [ n ] 2sin ( 0.2n − 2 ) hodnotu). Můžu ho popsat rovnicí, třeba s ( t ) = cos ( 2t ) nebo U spojitého signálu bude grafickým vyjádřením křivka, u diskrétního množina bodů s(t) = sin(2t)
x[n] = 2sin(0.2n-2)
1
2
0.8
1.5 0.6
1
0.4 0.2
0.5
0
0
-0.2
-0.5
-0.4
-1 -0.6
-1.5
-0.8 -1
-2 0
1
2
4
3 cas [s]
5
6
7
0
20
40 vzorky [-]
60
80
U náhodného signálu neznám hodnotu přesně, jen ji mohu popsat pomocí parametrů, třeba střední hodnota, rozptyl, autokorelací funkce a jiné ohavnosti… (opáčko z pravděpodobnosti a statistiky).
Periodické / neperiodické signály Tohle znáte, periodický signál = furt se opakuje dokola. Matematicky: s (t ) signál s ( t ) je periodický, pokud existuje T takové, že s ( t + T ) =
obdobně x [ n] signál x [ n ] je periodický, pokud existuje N takové, že x [ n + N ] =
Když neexistuje, tak je signál neperiodický (překvápko). T (respektive N) nemusí existovat jen jedno (a často tomu tak je, vlastně vždycky, jak to?). To nejmenší T (respektive N) se nazývá základní perioda. Pro výše vedené příklady: Pro s ( t ) = cos ( 2t ) je T = π ? = Pro x [ n ] 2sin ( 0.2n − 2 ) je N = 32 ? KDEPAK ! CHYTÁČEK ! Pro diskrétní signál i když vypadá periodicky nemusí vůbec základní perioda existovat (více později)