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


Arhiv

Oblak

 

rss

Vsevedno okno

Kategorije

Nekaj za preživetje:

Blogroll