15/15

SIS: 5.vaja: Lastnosti DFT – Izgubno stiskanje podatkov s pomočjo DFT

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

Navodilo:

V primeru, da imamo signal, v katerem nastopa relativno malo frekvenc, lahko pretvorbo v frekvenčni prostor izkoristimo tudi za izgubno stiskanje podatkov (za ta namen se pogosteje uporablja kosinusna in valčna transformacija).

V našem primeru bomo poskusili stisniti tone, ki nastopajo pri prejšnji nalogi. Postopek stiskanja pa bo naslednji:
signal pretvorimo v frekvenčni prostor, delali bomo v pravokotnih koordinatah
obe amplitudi (kosinus in sinus) pri frekvencah, pri katerih je absolutna amplituda kosinusov manjša od podanega praga, postavimo na 0
podatke stisnemo z uporabo naslednjih pravil:

  1. stiskati začnemo pri frekvenci 0 in nadaljujemo do Fvz/2 (torej od indeksa 1 do N/2+1)
  2. najprej zapišemo amplitudo kosinusa, nato še sinusa
  3. v kolikor je amplituda kosinusa 0, zapišemo najprej 0, nato pa še število, kolikokrat se ta ničla ponovi
  4. postopek nato nadaljujemo pri prvi neničelni vrednosti

Primer: X=[9 3+2i 0 0 5+3i 0 8+9i....] bi stisnili v vektor [9 0 3 2 0 4 5 3 0 2 8 9].

Napišite še postopek za dekompresijo, ki bo ponovno razširil stisnjeni posnetek. Za pretvorbo iz frekvenčnega v časovni prostor uporabite funkcijo ifft.

Oddati morate postopek za kompresijo in dekompresijo, oddajte pa tudi tekstovno datoteko, v kateri opišite, kako se je kompresija obnesla (kakšen signal, prag, dosežena kvaliteta, razmerje velikosti) .

Zgradba vašega programa naj bo naslednja:

POZOR! Podatki, ki so zrcaljeni čez polovico so tudi konjugirani (imaginarnemu delu se spremeni predznak. npr. če X(2)=2+3i, potem X(end)=2-3i). Uporabite vgrajeno funkcijo conj.

>> Poglej rešitev <<


10/10

SIS: 5.vaja: Lastnosti DFT – Ugotovi_ton

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

Navodilo:

Ko glasbeniki igrajo na glasbila, ustvarjajo tone. Vsak ton je definiran s točno določeno frekvenco (npr. ton a1 ima frekvenco 440 Hz). Frekvence tonov lahko razberemo iz “tabele tonskih frekvenc”.

V kolikor nam glasbena teorija ne leži najbolje ali pa nimamo absolutnega posluha, lahko posamezen ton ugotovimo s pomočjo DFT-ja. Pogoj za to je, da v signalu nastopa le en ton. V tem primeru lahko signal pretvorimo v frekvenčni prostor, ter poiščemo frekvenco, pri kateri je amplituda največja (v polarnih koordinatah). S pomočjo tabele tonskih frekvenc lahko nato ugotovimo, ta kateri ton gre.

Napišite funkcijo ton=ugotovi_ton(signal, fvz), ki kot vhod sprejme posnet signal in vzorčevalno frekvenco, kot izhod pa vrne ton (v obliki niza – npr. ‘C1′). Pričakujete lahko tone od C1 do C2. V kolikor najdena frekvenca ne ustreza natančno tonu, vrnite ton, ki je najbližji zaznani frekvenci.

Za test lahko uporabite posnetke tonov A, C, E, ki so bili pobrani s te strani.

>> Poglej rešitev <<


3/3

SIS: 5.vaja: Lastnosti DFT – Moja_konvulucija

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

Navodilo:

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).

>> Poglej rešitev <<


5/5

SIS: 4.vaja: Diskretna Fourierjeva tranformacija – Izrisi_sistem

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

Navodilo:

DFT nam nudi odlično orodje za opazovanje obnašanja nekega sistema. Impulzni odziv h=[0.03806, 0.14645, 0.30866, 0.5, 0.69134, 0.85355, 0.96194, 1, 0.96194, 0.85355, 0.69134, 0.5, 0.30866, 0.14645, 0.03806] s pomočjo funkcije fft pretvorite v frekvenčni prostor (1t). Izrišite amplitude in faze, pri čemer naj bodo na osi X vrednosti med [0 1) (2t). V komentar funkcije zapišite, za kakšen filter gre in kako se obnaša – katere frekvence imajo amplitudo blizu 0 (1t). Z rdečo črto označite točno mesto na grafu, kjer se amplitude začnejo zrcaliti (1t).

Grafa naj bosta na eni sliki. Pazite, da bodo osi pravilno označene (ob napaki -5t)!

Vse skupaj naj se naredi v funkciji izrisi_sistem.

>> Poglej rešitev <<


8/10

SIS: 4.vaja: Diskretna Fourierjeva tranformacija – Moj_DFT

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

Navodilo:

Napišite DFT s pomočjo skalarnega produkta. Ustvarite torej funkcijo X=moj_dft(x, Fvz) (7t), kjer je x vektor v časovnem prostoru in Fvz vzorčevalna frekvenca. Vaš rezultat mora biti primerljiv z rezultatom matlabovega FFT (tako v realnem kot v imaginarnem delu rezultata)! Bodite pozorni na to, da je dolžina FFTja N vzorcev, dolžina rezultata vaše funkcije pa bo N/2+1, zato sistem tudi pričakuje tako dolžino. Dolžina naj bo potenca števila 2. Uporaba matlabovih funkcij fft, fft2, fftn, fftw… ni dovoljena!

V funkciji izrišite amplitudo in fazo rezultata v frekvenčnem prostoru (3t). Na osi X naj bodo pravilno označene frekvence, na osi Y pa amplitude oz. faze. Ne pozabite na oznake osi. Oba grafa naj bosta prikazana na eni sliki (uporabite funkcijo subplot)!

>> Poglej rešitev <<


Arhiv

Oblak

 

rss

Vsevedno okno

Kategorije

Nekaj za preživetje:

Blogroll