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


Arhiv

Oblak

 

rss

Vsevedno okno

Kategorije

Nekaj za preživetje:

Blogroll