Napišite funkcijo za konvolucijo z uporabo FFT y=moja_konvolucija(x, h) (3t). Dolžina izhodnega signala mora biti enaka vsoti dolžin signala x ter impulznega odziva h zmanjšane za 1 (length(x)+length(h)-1) (n:-3t). Da boste kompatibilni z matlabovo funkcijo conv, uporabite še drugi parameter pri fft, ki pove, kako dolžino signala naj uporabi (dodajo se ničle na začetek in konec signala).
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!
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.