Jakob Nielsen wrote:
> At DCT ikke giver frekvenser, betyder det at det ikke er metoden til
> beregning af lydspektrum?
Det kan vel godt give et pseudu billede at lydspektret.. Kommer vel an på
hvilke informationer man skal bruge..
> Fourier er som sådan lige så simpel at
> implementere, hvis man ikke skal forstå ideen 100%, men nu har jeg set mig
> lun på DCT, da den tydeligvis er bedre til den analyse man anvender til
> jpeg.
Nu er DCT en del af jpeg standarden, så det vil være dumt at bruge en dft i
stedet
DCT benyttes istedet for DFT, fordi kraftig kvantistering i de høje
frekvenser ikke giver så store udsving i de yderste samples. Derved slipper
man for at bruge vinduer og overlap.
>> Det er somend rigtig nok, der indgår både division og sqrt. Dette gør dog
>> ikke noget implementations messigt, da n er en konstant der kan ganges
>> ind i summen og derefter ganges på cosinus tabellen.
> Ja eller ganges ind i matrisen før man ganger sine data på?
Nemlig.
> Har du eller andre en forklaring på at index n i min frekvens-vektor
> indeholder amplituden for frekvensen n/2?
Thjae.. Du kan løse det matematisk:
DCT hedder:
DCT[k] = sum( x[n] * cos( ( (2k+1)*u*PI )/ ( 2*M) )
Hvor du har x[n] == cos(2*PI* u * f)
sum( cos(2*PI* u * f) * cos( ( (2k+1)*u*PI )/ ( 2*M) )
summen er fra u=0 til u= noget meget stort, derved vil ovenstående give det
største tal hvis:
2*PI* u * f = ( (2k+1)*u*PI )/ ( 2*M)
hvilket ca er:
2*PI* u *f = 2k*u*PI/2*M
dvs
k = f*2*M
du har i dit eksempel f=0.1 og M = 1000
=> k = 200.
det vil sige du vil have max i DCT[200].
--
/Jesper