21.3 Meciul # 3: Media mobilă vs. Un singur pol

A treia noastră competiție va fi o luptă a filtrelor din domeniul timp. Primul luptător va fi un filtru medie mobilă de nouă puncte. Oponentul său pentru meciul de astăzi va fi un filtru recursiv cu un singur pol folosind tehnica bidirecțională. Pentru a obține un răspuns în frecvență comparabil, filtrul cu un singur pol va utiliza o scădere de la un eșantion la un eșantion de x = 0,70. Lupta începe în figura 21-6, unde este afișat răspunsul în frecvență al fiecărui filtru. Nici unul nu este foarte impresionant, dar, bineînțeles, nu pentru separarea de frecvență se folosesc aceste filtre. Nici un punct pentru niciuna dintre părți.

Figura 21-7 prezintă răspunsurile la treaptă ale filtrelor. În (a), răspunsul la treaptă a mediei mobile este o linie dreaptă, cea mai rapidă modalitate de a trece de la un nivel la altul. În (b), răspunsul la treaptă al filtrului recursiv este mai neted, ceea ce poate fi mai bun pentru unele aplicații. Un punct pentru fiecare parte.

Aceste filtre sunt în mod egal potrivite în ceea ce privește performanța și adesea alegerea dintre cele două se face pe baza preferințelor personale. Totuși, există două cazuri în care un filtru are un ușor avantaj față de celălalt. Acestea se bazează pe compromisul dintre timpul de dezvoltare și timpul de execuție. În primul rând, doriți să reduceți timpul de dezvoltare și sunteți dispuși să acceptați un filtru mai lent. De exemplu, este posibil să aveți nevoie de o singură dată pentru a filtra câteva mii de puncte. Deoarece întregul program rulează în numai câteva secunde, este inutil să-ți petreci timpul optimizând algoritmul. Virgula mobilă va fi aproape sigur utilizat. Alegerea este să utilizați filtrul medie mobilă efectuat prin convoluție sau un filtru recursiv cu un singur pol. Câștigătorul aici este filtrul recursiv. Va fi un pic mai ușor de programat și modificat și se va executa mult mai repede.

Figura 21-6 Răspunsurile în frecvență pentru Media mobilă și Un singur pol.

Ambele aceste filtre au un răspuns în frecvență slab, ceea ce era de așteptat pentru filtrele din domeniul timp.

Cel de-al doilea caz este exact opusul; filtrul dvs. trebuie să funcționeze cât de repede posibil și sunteți dispus să cheltuiți timpul suplimentar de dezvoltare pentru al obține. De exemplu, acest filtru poate face parte dintr-un produs comercial, cu potențialul de a fi rulat de milioane de ori. Probabil veți folosi numere întregi pentru cea mai mare viteză posibilă. Alegerea filtrelor va fi media mobilă efectuată prin recursivitate, sau filtrul recursiv cu un singur pol, implementat cu tabele de căutare sau math întreg. Câștigător este filtrul medie mobilă. Se va executa mai repede și nu va fi susceptibil la problemele de dezvoltare și execuție ale aritmeticii întregi.

Figura 12-7 Răspunsurile la treaptă ale mediei mobile și filtrului bidirecțional cu un pol.
Răspunsul la treaptă a Mediei mobile apare pe un număr mai mic de eșantioane, în timp ce răspunsul la treaptă al filtrului cu un pol este mai lin.