ZZS - 2.cvičení: Číslicové signály, 29.září 2014 ----------------------------------------------------------- PŘÍKLAD 1: Generování neperiodických signálů a) Exponenciální průběhy -- Řešení: >> t=0:0.1:8; >> a=0.8; b=-0.5; >> x_t=a*exp(b*t); >> doba=8; fs=10; >> a=0.8; tau=2; >> t=0:1/fs:doba-1/fs; >> x_t=a*exp(-t/tau); >> pb=10; >> n=0:pb; >> c=exp(-doba/(pb*tau)); >> x_n=a*c.^n; >> % c=0.6703 b) Diracův impuls -- Řešení: >> t=-2:0.01:6; >> x_t = [t >= 0]; >> n=-2:6; >> x_n = [n >= 0]; c) Jednotkový skok -- Řešení: >> n=-5:10; >> x_n = [n == 0]; ----------------------------------------------------------- PŘÍKLAD 2: Generování periodických průběhů a) Obdélník >> o1_t = square(2*pi*f*t1); >> o2_t = square(2*pi*f*t1,25); >> o3_t = square(2*pi*f*t1,75); >> x_min =-.001; x_max =0.021; >> y_min =-1.2; y_max =1.2; >> axis([x_min x_max y_min y_max]) b) Pila >> p1_t = sawtooth(2*pi*f*t1,0); >> p2_t = sawtooth(2*pi*f*t1,0.5); >> p3_t = sawtooth(2*pi*f*t1,1); ----------------------------------------------------------- PŘÍKLAD 3: Harmonické průběhy a) Generujme 20 ms harmonického signálu o frekvenci 440 Hz a vzorkovací frekvenci 8 kHz >> f=440; fs=8000; doba=.02; >> t1 = 0:1/fs:doba-1/fs; >> x1_t = sin(2*pi*f*t1); >> n1 = 0:1:fs*doba-1 >> x1_n = sin(2*pi*f*n1/fs); b) Generujme 4 periody signálu o frekvenci 440 Hz a vzorkovací frekvenci 8 kHz >> f=440; fs=8000; pp=4; >> t2 = 0:1/fs:pp/f-1/fs; >> x2_t = sin(2*pi*f*t2); >> n2 = 0:1:pp*fs/f-1; >> x2_n = sin(2*pi*f*n2/fs); c) Generujme 25 vzorků signálu o frekvenci 440 Hz a vzorkovací frekvenci 8 kHz >> f=440; fs=8000; N=25; >> t3 = 0:1/fs:N/fs-1/fs; >> x3_t = sin(2*pi*f*t3); >> n3 = 0:1:N-1; >> x3_n = sin(2*pi*f*n3/fs); ----------------------------------------------------------- PŘÍKLAD 4: Generování telefonních zvuků I a) Oznamovací tón: F = [425 0 425 0 ]; [Hz] T = [0.33 0.33 0.66 0.66 ]; [s] b) Vyzváněcí tón: F = [425 0]; [Hz] T = [1 3]; [s] c) Odkazovací ton: F = [950 0 1400 0 1800 0 ]; [Hz] T = [0.33 0.03 0.33 0.03 0.33 1.25]; [s] d) Obsazovací ton: F = [425 0]; [Hz] T = [0.33 0.42]; [s] ----------------------------------------------------------- PŘÍKLAD 5: Hudební stupnice a) Napišme funkci ton=nota(klavesa,doba), která generuje harmonický signál odpovídající pořadí klávesy na klaviatuře. b) Generujme hudební stupnici pomocí funkce nota. % function ton = nota(klavesa,doba) % funkce generuje sinusovy signal odpovidajici poradi na klavesnici % % vstup: klavesa ... poradi klavesy pozadovane noty % c1=40; d1=42; e1=44; f1=45; g1=47; a1=49; h1=51; c2=52 % doba ... trvani signalu [s] % vystup: ton ... generovany signal [Hz] fs = 8000; % pripadne dat jako parametr funkce f = 440 * 2 ^ ((klavesa-49)/12); t = 0:1/fs:doba-1/fs; ton = sin(2*pi*f*t); c) Napišme jednoduchou písničku (Ovčáci, ...) %----------------------------------------------------------- % PŘÍKLAD 6: Morseovka % % Vstup kodéru Textový výstup Zvukový výstup % % tečka • f = 1300 Hz; T = 0,15 s % čárka – f = 1300 Hz; T = 3 * 0,15 = 0,45 s % mezera mezi tečkou a čárkou 1 mezera f = 0 Hz, T = 0,15 s % mezera mezi písmeny 3 mezery f = 0 Hz; T = 3 * 0,15 = 0,45 s % mezera mezi slovy 7 mezer f = 0 Hz; T = 7 * 0,15 = 1,05 s % % Vybrané znaky Morseovy abecedy % Symboly Kód % S . . . % M - - % O - - - % C - . - . % P . - - . % % Poznámky k realizaci: % a) Vytvořte funkci morse.m, která bude převádět text do „morseovky“ % function [morseovka] = morse(vst_text) . % Vstup i výstup by měly být typu řetězec % % b) Na začátku funkce budou dva vektory. Jeden se symboly a druhý % s odpovídajícím kódem. V kódové matici by měly být řetězce, % kde každý řádek odpovídá jednomu symbolu. Pro vytvoření matice % řetězců je užitečná funkce char. Poněvadž jednotlivé řetězce jsou % různě dlouhé, některé řetězce jsou doplněny mezery (na délku nejdelšího). % % c) Nahraďte každý symbol odpovídajícím kódem. Mezi jednotlivá slova % přidejte 7 mezer; mezi symboly vložte 3 mezery. % Lze využít funkcí find, strrep, deblank