Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 04. 03. 2011 14:36 — Editoval haxors (04. 03. 2011 14:38)

haxors
Zelenáč
Příspěvky: 8
Reputace:   
 

Implementace Goertzelova algoritmu

Ahoj,
snažím se udělat něco jako osmipásmový spektrální analyzátor (pro barevnou hudbu) a chtěl bych použít Goertzelův algoritmus. Vytvořil jsem si data podobná těm, která bude dávat PIC z ADC (budou to hodnoty -512 až 512 pro -2.5, resp. 2.5V). A nyní se dostáváme k mému problému. Takto vytvořená data poté podrobím Goertzelově algoritmu (okopíroval jsem ho z anglické Wikipedie):

Code:

s_prev = 0
s_prev2 = 0
coeff = 2*cos(2*PI*normalized_frequency);
for each sample, x[n],
  s = x[n] + coeff*s_prev - s_prev2;
  s_prev2 = s_prev;
  s_prev = s;
end
power = s_prev2*s_prev2 + s_prev*s_prev - coeff*s_prev*s_prev2;

Přepsal jsem ho rychle na zkoušku do PHP. A poté jsem si vyzkoušel pro jednu celou periodu sinusoidy (cca. 60 vzorků) proběhnout algoritmus. Jenže tam nikde nevidím vzorkovací frekvenci, kterou je nutno brát také v úvahu. Tak či tak, experimentoval jsem s různými zadanými $k, ale rozumná hodnota mi nikdy nevyšla. Zkoušel jsem i vykreslit si graf všech hodnot, co vrátí algoritmus pro hodnoty 0 až 10000 a vyšel mi graf, který se podobal "kopečku", ve kterém klesaly hodnoty od 262746 do 248209. Omlouvám se, jestli jsem přehlédl nějakou hloupost. Moje matematické znalosti bohužel nejsou velké, jsem spíš programátor. Díky moc za odpovědi.

Offline

  • (téma jako vyřešené označil(a) haxors)

#2 04. 03. 2011 15:34

haxors
Zelenáč
Příspěvky: 8
Reputace:   
 

Re: Implementace Goertzelova algoritmu

↑ haxors:

Omlouvám se za možná zbytečný dotaz, zjistil jsem, že 1 sinusoida nestačí, teď jsem zkusil 5 period za sebou a funguje to přesně, jak má.

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson