Cvičení 1 - Diskrétní signál

A) Teoretický úvod

Signál je z teoretického hlediska nositelem informace. Nejčastěji je signál tvořen známou fyzikální veličinou např. napětím, jehož amplitudové a časové změny reprezentují přenášené informace. Matematicky tvoří každý signál s funkci q=s(t) převodu nezávisle proměnné t na závisle proměnnou q. Podle spojitosti nezávisle proměnné t existují signály se spojitým časem a signály s diskrétním časem (nezávisle proměnná nemusí být vždy jen čas, v případě obrazů to bude např. souřadnice pixelu). Signál se spojitým časem s(t) je definován na oboru reálných čísel R, naopak signál s diskrétním časem s(n) je definován na oboru přirozených čísel N.

Obdobně jako může být nezávisle proměnná t z oboru reálných nebo přirozených čísel (vzorkování), může být i závisle proměnná q z oboru reálných resp. přirozených čísel (kvantování). Pak hovoříme o spojitém resp. diskrétním signálu. Kombinace typů závisle a nezávisle proměnných pak tvoří čtyři možné typy signálu: spojitý signál se spojitým časem, spojitý signál s diskrétním časem, diskrétní signál se spojitým časem a diskrétní signál s diskrétním časem.

Základní operací se dvěma signály je konvoluce. Konvoluce je matematická operace kombinující dva signály s(t) a h(t) do jednoho výstupního signálu c(t) podle následujícího vzorce. V případě diskrétních signálů platí rovnice vpravo, kde je místo symbolu t symbol n a spojitý integrál je nahrazen diskrétní sumou. Dále budeme vzhledem k číslicovému zpracování úloh uvažovat diskrétní signály s diskrétním časem.

V oboru zpracování signálu a potažmo i obrazů (obecně vícedimenzionální signál) je zpravidla první proměnnou zpracovávaný signál s(n) a druhou proměnnou filtr h(n). Graficky si pak lze konvoluci představit jako postupné posouvání stranově (horizontálně) převráceného filtru h(n) po signálu s(n). Konvoluce je pak odezva c(n) geometricky odpovídající ploše pod křivkou průniku obou signálů jak ukazuje následující obrázek.

Druhou častou operací při zpracování dvou signálů je korelace. Korelace je signál určující souvztažnost (někdy míru podobnosti) signálů v daném vzorku (čase, prostoru atd.). Míře podobnosti v jednom konkrétním vzorku n se říká korelační koeficient a značí se r. Množina korelačních koeficientů pak tvoří korelační funkci r(n), jejíž definiční vztahy pro spojité a diskrétní signály vypadají následovně.

Ze vztahů je patrné, že korelaci lze snadno vypočítat pomocí konvoluce prostým otočením znaménka nezávislé proměnné signálu s(n). V případě, že ve výpočtu korelace figurují dva různé signály, mluvíme o vzájemné (cross) korelaci. Naopak v případě, že obě proměnné jsou ve výpočtu reprezentovány jedním a týmž signálem, mluvíme o autokorelaci jejímž výsledkem je tzv. autokorelační funkce.

B) Úkoly

  1. Na intervalu <0;6pi> vygenerujte s periodou vzorkování 0,1 syntetický zkušební signál z(n) obsahující stejnosměrnou i střídavou složku. Signál vytvořte složením lineární funkce x(n)=2n a goniometrické funkce y(n)=5*sin(3n). Do jednoho grafu zobrazte funkcí plot oba základní signály modrou barvou a výsledný složený signál červenou.

  2. Napište funkci [C] = SignalConvolution(S,H), která vrací v poli C konvoluci jednorozměrného signálu S a filtru H. Správnost implementace ověřte na signálu z předchozího bodu cvičení a s filtrem modelujícím posunutý Diracův impuls.

  3. Navrhněte dva diskrétní filtry fLOW(n) resp. fHIGH(n) typu dolní resp. horní propust o vhodné délce tak, aby jste konvolucí z předchozího bodu odfiltrovali vysoké resp. nízké frekvence v signálu z(n). Společně s původním signálem z(n) zobrazte do jednoho okna odezvy obou filtrů a komentujte výsledky.

  4. Napište funkci [R] = SignalCorrelation(S,H) pro výpočet korelace dvou jednorozměrných signálů. Správnost implementace ukažte na vhodně zvoleném neperiodickém signálu S a výřezu jeho části. Pokuste se provést stejný výpočet na vstupním signálu opatřeném náhodným šumem (funkce rand).

C) Dobré vědět

  • Základní příkazy pro práci v prostředí Matlab: help příkaz, demo, exit, who, whos, clear, close

  • Základní příkazy pro práci s maticemi: ones, zeros, A = [1 10 5; 1 12 7; 2 15 10], B = A', C = A.*B, size

  • Délka dolnopropustního filtru fLOW je nutně vyšší, než u hornopropustního filtru fHIGH, který může mít pro uvedený případ např. pouze tři prvky.

  • Povolené funkce: zeros, ones, plot, figure, sin, xlabel, ylabel, title, grid, hold, text, rand

  • Nepovolené funkce: conv, corr, xcorr, xcorr2

D) Ilustrace výsledků