10/10

SIS: 3. vaja – Linearni sistemi in konvolucija: Moj sistem

Avtor: Ali Gator | 16 March 2010 | Ni ni komentarjev
Kategorija: SIS

Navodilo:

Obnašanje linearnega sistema poznamo v popolnosti, v kolikor poznamo njegov impulzni odziv. Tako lahko s konvolucijo izračunate izhod sistema, v kolikor poznate vhod ter impulzni odziv.

Napišite funkcijo odziv=dobi_odziv (5 t), ki bo dobila impulzni odziv sistema implementiranega v funkciji y=sistem(x),kjer je x vhodni vektor v sistem, y pa rezultat (datoteka sistem.p je kodirana, v matlabu pa jo uporabite na popolnoma isti način kot vsako funkcijo v datoteki .m).

Potem ko dobite odziv, v funkciji y=moj_sistem(x) (3 t) implementirajte lasten sistem (v njem ne smete klicati funkcije sistem), ki bo imel tak impulzni odziv kot funkcija sistem. Uporabite funkcijo conv.

Vstavite v vaš sistem nek poljuben signal (npr. glasbo). V tekstovno datoteko opazanja.txt (2 t) zapišite, kaj po vašem sistem naredi.

Pozor! Tokrat sistem ne bo sporočil, kaj je bil vhod in kaj pričakovan izhod, saj bi s tem bil razkrit impulzni odziv. Neposredno se bodo na sistemu testirale samo izhodne vrednosti funkcije moj_sistem, saj so odvisne od vrednosti izhoda funkcije dobi_odziv. Pri ocenjevanju naloge se bo eksplicitno preverjala vsebina vseh datotek!

>> Poglej rešitev <<


10/10

SIS: 3. vaja – Linearni sistemi in konvolucija: Odmev

Avtor: Ali Gator | 16 March 2010 | Ni ni komentarjev
Kategorija: SIS

Navodilo:

Preprost linearni sistem je zvočni efekt odmeva (echo). Opišemo ga lahko z enačbo y[n]=x[n]+kx[n-d], kjer je nštevilka vzorca, k koeficient dušenja in d zakasnitev. Snamete si lahko originalen signal in signal, ki ga je ustvaril sistem z enačbo y[n]=x[n]+(1/2)*x[n-22050].

Vaša naloga je, da napišete funkcijo y=odmev(x,k,d) (10 t), ki bo vhodnemu signalu x dodala odmev z zakasnitvijo d in jakostjo k (k je torej predmnožilen faktor dodanega odmeva). Bodite pozorni na to, da je izhodni signal daljši, kakor vhodni, saj se mora slišati ves odmev! Nalogo implementirajte s pomočjo funkcije conv(), drugače do naloga vredna največ 5 t.

>> Poglej rešitev <<


10/10

SIS: 2. vaja – Vpliv vzorčevalne frekvence

Avtor: Sonicelo | 12 March 2010 | Ni ni komentarjev
Kategorija: SIS

Navodila

Pri tej nalogi se boste preučili vpliv vzorčevalne frekvence na kvaliteto zvoka.

V MATLABu vzorčite zvok s funkcijo audiorecorder, ki vrne referenco na objekt audio recorder. Da bi posneli 3 sekunde dolg zvok, pri frekvenci vzorčenja 44100 Hz z ločljivostjo 16 bitov moramo v malabovo ukazno okno napisati naslenje ukaze:
recorder = audiorecorder(44100,16,1); %ustvari objekt za snemanje zvoka, frekvenco vzorčenja nastavi na 44100 Hz, ločljivost a 16 bitov zadnji argument pa določa število posnetih kanalov (1-mono, 2-stereo);
recordblocking(recorder,3); %posname 3 sekunde zvoka
posnetek = getaudiodata(recorder); % shrani posneti zvok v spremeljivko posnetek

Vzorčen zvok predvajate s funkcijo sound pri čemer navedete tudi vzorčevalno frekvenco, s katero je bil zvok vzorčen. Npr.
sound(posnetek,44100); %predvaja posneti zvok

Če je predvajani zvok pretih, lahko posnetek pomnožite s konstanto (npr. 2) in tako povečate glasnost. Pri tem morate paziti, da ne prebijete minimalne in maksimalne vrednosti, ki jo omogoča zapis s 16 biti ( int16).

Pri nalogi boste simulirali zmanjšanje vzorčevalne frekvence. To bo narejeno v funkciji (4t)
[s_1378,s_2756,s_5512,s_11025,s_22050] = znizaj_frekvenco_vzorcenja(s_44100)

Vhod v funkcijo bo signal vzorčen s frekvenco 44100 Hz, izhod pa signali vzorčeni s frekvencami 22050 Hz, 11025 Hz, 5512 Hz, 2756 Hz in 1378 Hz. Če dobro pogledate, je vsaka vzorčevalna frekvenca za polovico manjša od prejšnje. Uporaba stavkov for in while ni dovoljena.
V funkciji boste simulirali zmanjšanje vzorčevalne frekvence za polovico tako, da boste iz vektorja izbrisali vsak drug vzorec. S tem se vzorčevalna frekvenca zmanjša za polovico. V MATLABu vsak drugi vzorec izpuste z naslednjim stavkom: s=posnetek(1:2:end). Da bi bilo nižanje frekvence vzorčenja popolnoma pravilno, bi morali signal najprej še filtrirati (t.j. izničiti spektralno prekrivanje). Ker bomo filtre spoznali šele kasneje, bomo zavestno naredili to napako.

Žal zvočne kartice ne podpirajo poljubne vzorčevalne frekvence, zato bomo vse iz signala izbrisane vzorce nadomestili z njihovimi sosedi, ki so v signalu ostali. Na ta način bomo signal lahko še vedno predvajali z originalno vzorčevalno frekvenco. Operacijo si predstavljajte, kakor da smo zmanjšali bitno sliko, nato pa smo si dobljeno sliko približali – slika postane kockasta. Če smo zbrisali vsak drugi vzorec, zbrisane vzorce nadomestimo s sosedi v MATLABu z naslednjimi stavki (za vektor predpostavimo, da je v vrstični obliki):
m=[s; s]; % naredimo matriko z dvema vrsticama. V vsaki je signal
r=m(:); % z (:) zahtevamo, da se matrika izpiše v obliki vektorja izpisuje se po stolpcih (najprej 1. stolpec, nato 2. itd..)

Da bodo vsi izhodni signali s tem postopkom imeli enako dolžino, mora biti dolžina signala v našem primeru deljiva z 32!

Predvajajte si signale, ki jih dobite (npr. sound(s_2756,44100)), nato pa sestavite tabelo, v kateri boste imeli 2 stolpca. V prvem stolpcu boste navedli vzorčevalno frekvenco, v drugem kakovost zvoka pri tej vzorčevalni frekvenci (odlična, dobra, slaba, nezadovoljiva). Tabela naj se nahaja v navadni datoteki porocilo_naloga1.pdf (2t).

Poleg tabele izrišite tudi grafe Fourierjeve transformacije pred in po pretvorbi (za vse zgoraj navedene pretvorbe) (2t). Pomagajte si s sledečim ukazom
figure;
hold on;
F_vzorcevalna = 44100;
plot([0:length(s_44100)-1]/length(s_44100)*F_vzorcevalna,abs(fft(s_44100)));
axis tight;
xlabel(‘Frekvenca (Hz)’);
ylabel(‘Amplituda (a.u.)’);

Pri tem pazite da vzorčevalno frekvenco in ime signala nadomestite s pravimi vrednostmi pri posamezni pretvorbi. Na vsakem grafu z rdečo navpično črto označite Nyquistovo frekvenco! (1t). Vse grafe dodajte v datoteko porocilo_naloga1.pdf in jih opremite s kratkimi komentarji (1t). Kaj se dogaja s frekvenčno vsebino signala?

Pozor! Uporabite popolnoma enaka imena funkcij, kot je zahtevano, saj se uporablja avtomatsko preverjanje. V nasprotnem primeru bo naloga ocenjena z 0 točkami.

>> Poglej rešitev <<


10/10

SIS: 1. vaja – Izriši graf

Avtor: Sonicelo | 12 March 2010 | Ni ni komentarjev
Kategorija: SIS

Navodila

V matlabu napišite funkcijo izrisi_graf(vektor) (5 t), ki bo izrisala vrednosti vhodnega vektorja. Signal naj bo na grafu označen z modro barvo (1 t). Z rdečo barvo na grafu označite povprečno vrednost signala (1 t), z zeleno črto pa standardno deviacijo (pozitivni odmik od povprečja naj bo označen čtrkano, negativni odmik pikčasto)(1 t). Abscisna os grafa naj bo označena z nizom signal (vzorci) (1 t), ordinatna os pa z nizom Amplituda (V) (1 t).

>> Poglej rešitev <<


10/10

SIS: 1. vaja – Evklidova norma

Avtor: Sonicelo | 12 March 2010 | Ni ni komentarjev
Kategorija: SIS

Navodila

V matlabu napišite funkcijo norma=evklid_norm(vektor), ki izračuna Evklidsko normo vhodnega vektroja. Funkcija naj deluje za poljubne dolžine in orientacije vhodnega vektorja (4 t). Uporabi stavka for in funkcije norm sta prepovedani! Napišite tudi funkcijo razdalja=evklid_razdalja(vektor1,vektor2), ki vrne Evklidsko razdaljo med dvema vektrojema (4 t). Tudi v tem primeru naj bosta vektorja poljubnih a zmernih dolžin, krajši med njima pa naj se v funkciji avtomatsko dopolni z ničlami (2 t). Na primer, če je vektor1 = [1,2,3] in vektor2 = [1 2 3 4], se vektor 1 dopolni z eno ničlo in privzame vrednost vektor1 = [1,2,3,0].

Pred oddajo preverite pravilnost delovanja.

Pozor! Uporabite popolnoma enaka imena funkcij, kot je zahtevano, saj se uporablja avtomatsko preverjanje. V nasprotnem primeru bo naloga ocenjena z 0 točkami.

>> Poglej rešitev <<


Arhiv

Oblak

 

rss

Vsevedno okno

Kategorije

Nekaj za preživetje:

Blogroll