Reszte rozumem, ale do konca nie skumalem tego fragmentu z dzieleniem przez 32.
Beta przyjmuje wartosci od 0 do 15*31= 465 tak?
powiedzmy ze Beta = 12 , po operacji:
Beta = 12 And 31 ( bitowo 1100 And 11111) co da wynik 1100 czyli nadal 12, dla kazdej liczby mnieszej od 31 wykonanie tej operacji da nam to sama liczbe, dla liczb wiekszych od 31 wynikiem bedzie cos innego ( np Beta= 34 And 31 = 100010 And 11111 = 000010 czyli 2 . Nie bardzo mi sie to wszystko zgadza :/
A tak wogóle to obliczasz 16 punktowa DFT dla 32 próbek, dla gornego i dolnego pasma ?
Jeszcze jedna rzecz mi nie pasuje. Beta osiagnie maks wartosc 465 , po podzieleniu przez 32 = 15 ,czyli maks wartosc jaka mozemy wyciaganc z tablicy sinus:
Tmp_c = sinus(15 + 8) * Dane[i] ,czyli
sinus(23). Wiec dlaczego zdefiniowales tablice sinus na 32 elementy i dodatkowo jeszcze 8 kolejnych:
Sinus(33) = Lookup(0 , Tab_sin)
Sinus(34) = Lookup(1 , Tab_sin)
Sinus(35) = Lookup(2 , Tab_sin)
Sinus(36) = Lookup(3 , Tab_sin)
Sinus(37) = Lookup(4 , Tab_sin)
Sinus(38) = Lookup(5 , Tab_sin)
Sinus(39) = Lookup(6 , Tab_sin)
Sinus(40) = Lookup(7 , Tab_sin)
????
hunterhouse napisał:Beta = I * K
Beta = Beta And 31 // dlaczego Beta And 31 ???
- to jest obliczenie kąta (i*k)
and 31 to zamiana na kąt z przedziału do 0 do 2pi.
bo w moim programie są 32 prubki numerowana od 0 do 31 czyli kąt też jest od 0 do 31. 31 to po prostu kąt 360st czyli 2pi.
AND działa na bitach czyli m tym przypadku daje nam reszte z dzielenia przez 32.
j.
Beta przyjmuje wartosci od 0 do 15*31= 465 tak?
powiedzmy ze Beta = 12 , po operacji:
Beta = 12 And 31 ( bitowo 1100 And 11111) co da wynik 1100 czyli nadal 12, dla kazdej liczby mnieszej od 31 wykonanie tej operacji da nam to sama liczbe, dla liczb wiekszych od 31 wynikiem bedzie cos innego ( np Beta= 34 And 31 = 100010 And 11111 = 000010 czyli 2 . Nie bardzo mi sie to wszystko zgadza :/
A tak wogóle to obliczasz 16 punktowa DFT dla 32 próbek, dla gornego i dolnego pasma ?
Jeszcze jedna rzecz mi nie pasuje. Beta osiagnie maks wartosc 465 , po podzieleniu przez 32 = 15 ,czyli maks wartosc jaka mozemy wyciaganc z tablicy sinus:
Tmp_c = sinus(15 + 8) * Dane[i] ,czyli
sinus(23). Wiec dlaczego zdefiniowales tablice sinus na 32 elementy i dodatkowo jeszcze 8 kolejnych:
Sinus(33) = Lookup(0 , Tab_sin)
Sinus(34) = Lookup(1 , Tab_sin)
Sinus(35) = Lookup(2 , Tab_sin)
Sinus(36) = Lookup(3 , Tab_sin)
Sinus(37) = Lookup(4 , Tab_sin)
Sinus(38) = Lookup(5 , Tab_sin)
Sinus(39) = Lookup(6 , Tab_sin)
Sinus(40) = Lookup(7 , Tab_sin)
????