Portál AbcLinuxu, 12. května 2025 15:36

Dotaz: výpočet periody z diskrétního signálu

13.9.2010 17:49 Jakub
výpočet periody z diskrétního signálu
Přečteno: 1246×
Odpovědět | Admin
Dobrý den,

rád bych se zeptal ohledně hledání periody z nějákého vzorkovaného signálu. Po převedení zvuku na text potřebuji najít přesně začátky(index pozice) všech period.

Postupoval jsem následovně:

Nastavil jsem ručně začátek a od tohoto začátku běží testování zda-li má daný vzorek kladnou hodnotu, až přejde signál do zaporné osy, spustil jsem čítání záporných (i případných výjmečně kladných vzorků), dokuď počet záporných vzorků nedosáhne 3/4 kladných, poté jakýkoliv kaldný vzorek je považován za start další periody. Toto jsem prováděl jen při nástupech tónů, protože se signál zde chová méně divoce, dále algoritmus vycházel z předem několikrát naměřené periody.(předchozím postupem). Tento algoritmus funguje pouze u jednodušších nástrojů, u jinných se signály chovají divoce a předchozí trik je krátký.

Dotaz tedy zní: Jak by se to dalo obecně automatizovat pro každý periodický signál v diskrétním čase?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

13.9.2010 20:53 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: výpočet periody z diskrétního signálu
Odpovědět | | Sbalit | Link | Blokovat | Admin
U obecného signálu bude každá následující "perioda" jiná a nic takového jako jedno číslo neexistuje. Signál je obecně součtem v čase se měnících harmonických frekvencí (sinusovek) s v čase se měnícím podílem - spektrum signálu se mění. Takže můžeš signál rozsekat na malé časové díly, u těch zjistit jednotlivé harmonické, jejich fázové posuny a tedy i jejich průchody nulou, kdy začíná další perioda, ale pro ty jednotlivé harmonické. A pro další časové okno to vyjde jinak.
14.9.2010 14:35 hw | skóre: 23 | blog: Digital Design
Rozbalit Rozbalit vše Re: výpočet periody z diskrétního signálu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jedna z možností je skutečně hledání špiček ve spektru, jak je uvedeno v odpovědi výše. Další, poměrně jednoduchá možnost je využití autokorelační funkce, kde se také budou objevovat špičky odpovídající periodě signálu. Samozřejmě existuje plno dalších metod. Určitě doporučuji přečíst si něco o číslicovém zpracování signálů.
14.9.2010 19:01 Jakub
Rozbalit Rozbalit vše Re: výpočet periody z diskrétního signálu
Udělat Fourierovku z celého signálu mě také napadlo, zdál se mi ale problém, udělám-li jednu transformaci z celého signálu např z jedné sekundy zvuku (44100 vzorků) o frekvenci 200 Hz. Dostanu přeci 44100 harmonických frekvencích(komplexnich koeficientu), ve kterých maxima nebudou nutne znamenat počátky nových period, nebo ano? Myslel jsem, že toto platí, dělám-li transformace z již zjištěných period a ty právě potřebuji lépe zjistit.

Děkuji za předchozí odpovědi :)

14.9.2010 20:06 hw | skóre: 23 | blog: Digital Design
Rozbalit Rozbalit vše Re: výpočet periody z diskrétního signálu
Spektrum z celého záznamu skutečně moc nepomůže. Bylo by třeba hledat špičky ve spektrogramu s vhodně zvolenou délkou jednotlivých segmentů pro Fourierovu transformaci.
rofl.rofl avatar 14.9.2010 20:12 rofl.rofl | skóre: 10
Rozbalit Rozbalit vše Re: výpočet periody z diskrétního signálu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Korelační funkce?
Mozek je aparát, jehož pomocí si myslíme, že myslíme.
rofl.rofl avatar 14.9.2010 20:14 rofl.rofl | skóre: 10
Rozbalit Rozbalit vše Re: výpočet periody z diskrétního signálu
Mozek je aparát, jehož pomocí si myslíme, že myslíme.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.