%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % SMS - náměty pro 1.cvičení: Úvod do problematiky % Roman Čmejla, 2.října 2017 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ----------------------------------------------------------- PŘÍKLAD 1a: MATLAB Operace s vektory Vytvořte: vektor13 = 1 2 3 vektor14 = 2 3 4 Násobení vektoru konstantou vektor15 = vektor14 * 2 Násobení vektoru vektorem vektor16 = vektor13 * vektor14 vektor17 = vektor13 .* vektor14 vektor18 = vektor13 * vektor14' -- Řešení: >> vektor13=1:3 >> vektor14=2:4 >> vektor15=vektor14*2 >> vektor16 = vektor13 * vektor14 % nelze >> vektor17 = vektor13 .* vektor14 % nasobeni prvku s prvkem >> vektor18 = vektor13 * vektor14' % soucin radku a sloupce ----------------------------------------------------------- PŘÍKLAD 1b: MATLAB Matice Vytvořte matice matice1 = [ 1 2 3 ] matice2 = [ 1 2 3 4 5 6 7 8 9 ] Výběr prvku vypište prvek na pozici (3,1) v matice2 vypište všechny prvky v druhém řádku matice2 vypište všechny prvky v třetím sloupci matice2 -- Řešení: >> matice1 = [ 1 2 3 ] >> matice2 = [ 1 2 3; 4 5 6; 7 8 9 ] >> matice2(3,1) >> matice2(2,:) >> matice2(:,3) ----------------------------------------------------------- PŘÍKLAD 1c: MATLAB Vytvořte matice z vektorů: A = vektor13'*vektor12 B = [vektor1;vektor3;vektor1] C = [vektor1';vektor2';vektor1']' D = [vektor13 vektor14] -- Řešení: A % vysledkem je matice 3x4 B % nelze spojovat ruzne dlouhe radky do matice C % vysledkem je radkovy vektor o 25ti prvcich D % vysledkem je radkovy vektor o 6ti prvcich ----------------------------------------------------------- % PŘÍKLAD 2a: Aliasing - chirp signál % Vysvětlete vznik signálu y fs = 10000; okno = 512; prekryti = 500; NFFT = 1024; doba = 10; % zacatek v F0=0, v T1=1 sekunde dosahne F1=5000 Hz % y = chirp(t,F0,T1,F1) t = 0:1/fs:doba-1/fs; y=chirp(t,0,1,5000); ----------------------------------------------------------- % PŘÍKLAD 2b: Aliasing - audio signal % Vysvětlete rozdíly mezi signály y1 a y2 [x,fs]=wavread('tom'); % fs = 44100 Hz okno = 512; prekryti = 500; NFFT = 1024; DF = 20; % decimacni faktor y1 = x(1:DF:end); % fs=2205 Hz pro DF = 20 y2 = decimate(x,20); ----------------------------------------------------------- kvant.m function y=kvant(x,b) y = (round(2^(b-1) *x+.5)-.5)/2^(b-1); ----------------------------------------------------------- % PŘÍKLAD 3a: Kvantování sinusovky % Zobrazte 1 periodu kvantované sinusovky % a) 1-bit % b) 2-bity % c) 3-bity fs = 22050; f0 = 50; doba = .02; ----------------------------------------------------------- % PŘÍKLAD 3b: Kvantování - audio signál % Zobrazte a poslouchejte "Tom's dinner" při různém kvantování [x,fs]=wavread('tom'); ----------------------------------------------------------- % PŘÍKLAD 3c: Závislost činitele SNR [dB] na počtu bitů pro "tom.wav" [x,fs]=wavread('tom'); ----------------------------------------------------------- % PŘÍKLAD 4a: Amplitudová obálka - perkusní zvuky % Pro generování perkusních zvuků (syntetických zvonů, bicích, ...) % se často používá exponenciálních obálek. % Generujme tón „a1“ s exponenciálně tlumenou obálkou. % Časovou konstantu, která určuje dobu poklesu, budeme postupně měnit od 0,3 s až do 1 ms. % Výsledné signály si poslechneme a zobrazíme v časové oblasti. % Povšimněme si, jak se zkracující se časovou konstantou získává zvuk charakter kliknutí. fs = 16000; % vzorkovaci frekvence doba = 0.5; % cas.trvani signalu f0 = 440; % frekvence harmonickeho signalu t = 0:1/fs:doba-1/fs; % casova osa tau = [ 0.3 0.1 0.03 0.01 0.003 0.001]; % casove konstanty obalky ----------------------------------------------------------- % PŘÍKLAD 4b: Amplitudová obálka ADSR - neperkusní zvuky % % Časové obálky syntetických hudebních nástrojů se často modelují jako % posloupnost čtyř časových úseků: % A - attack (náběh) % D - decay (pokles) % S - sustain (průběh) % R - release (doznívání) % % % 1.0_| % | /\ % | / \ % 0.5_| / \________ % | / \ % | / \ % 0_|/__________________\______ % | A | D| S | R| % 0 V V V V % a1 a2 a3 a4 % % Generujme tón „a1“ jako harmonický signál o délce 1 sekundy % a vytvořme časovou obálku typu ADSR složenou z lineárních úseků. % Sledujme vliv: prodlužování doby náběhu A a poklesu D (zvyrazneni nabehu v case) fs = 8000; f0 = 440; doba_celkem = 1; doba_A = [0.001 0.003 0.01 0.03 0.1 0.3]; doba_D = [0.001 0.003 0.01 0.03 0.1 0.3]; doba_R = 0.02; doba_S = doba_celkem-doba_A-doba_D-doba_R; a1 = 1; a2 = 0.3; a3 = 0.2; a4 = 0; ----------------------------------------------------------- % PŘÍKLAD 4c: Amplitudová obálka ADSR - neperkusní zvuky % % Generujme tón „a1“ jako harmonický signál o délce 1 sekundy % a vytvořme časovou obálku typu ADSR složenou z lineárních úseků. % Sledujme vliv: změny amplitudy nástupu A (zvyrazneni nabehu v amplitude) y = [ ]; fs = 8000; f0 = 440; doba_celkem = 1; doba_A = 0.1; doba_D = 0.1; doba_R = 0.1; doba_S = doba_celkem-doba_A-doba_D-doba_R; a1 = [0.15 0.3 0.45 0.6 0.75 1.0]; a2 = 0.15; a3 = 0.15; a4 = 0; ----------------------------------------------------------- % PŘÍKLAD 4d: Amplitudová obálka ADSR - neperkusní zvuky % % Generujme tón „a1“ jako harmonický signál o délce 1 sekundy % a vytvořme časovou obálku typu ADSR složenou z lineárních úseků. % Sledujme vliv: změny amplitudy trvání průběhu S % (zvyrazneni nabehu poklesem ustal. casti) y = [ ]; fs = 8000;f0 = 440; doba_celkem = 1; doba_A = 0.1; doba_D = 0.1; doba_R = 0.1; doba_S = doba_celkem-doba_A-doba_D-doba_R; a1 = 1; a2 = [0.9 0.75 0.6 0.45 0.3 0.15]; a3 = [0.9 0.75 0.6 0.45 0.3 0.15]; a4 = 0;