Kasutaja:Konnula/liivakast

Allikas: Vikipeedia
66a3aDTMFpad
Autovoni klahvistikud kasutasid DTFM-signaali, mille tuvastamiseks saab kasutada Goertzeli algoritmi.

Goertzeli algoritmi (ka Goertzeli filter, inglise keeles Goertzel algorithm) kasutatakse digitaalses signaalitöötluses (DSP) diskreetse Fourier' pöörde (DFT) üksikute komponentide tõhusaks määramiseks. Algoritmi leiutas Gerald Goertzel aastal 1958 ning seda algoritmi kasutatakse näiteks multisageduslikul kakstoonvalimisel. [1]

Goertzeli algoritm analüüsib üksikut sageduskomponenti digitaalsignaalist, kuid erinevalt tavalisest DFT arvutusest, rakendab Goertzeli algoritm igal iteratsioonil üht realarvulist koefitsienti, kasutades realarvulistel sisenditel realarvulist aritmeetikat. [2][3][4] Täieliku spektri katmisel (diskreetse sisendandmete hulga korral) on Goertzeli algoritmi keerukus suurem, kui Fourier' kiirteisendusel (FFT), kuid väikese arvu sageduskomponentide arvutamisel on see efektiivsem, kui FFT - seetõttu ei vaja algoritmi kasutamine suurt arvutusvõimsust. Goertzeli algoritmi saab kasutada ka tagurpidi (sinusoidi sünteesimiseks), kusjuures iga sämpli arvutamiseks tuleb teha üks korrutus- ning üks lahutamistehe. On olemas ka Goertzeli algoritmi optimiseeritud versioon, mis on veelgi efektiivsem, kuid ei anna nii täpseid tulemusi.[5]

Algoritm[6][muuda | muuda lähteteksti]

Enne Goertzeli algoritmi kasutamist tuleb teha järgnevad sammud:

  1. Valida diskreetimissagedus (inglise keeles Sample rate);
  2. Valida ploki suurus N.

Diskreetimissagedus määratakse enamasti rakenduse järgi (näiteks helisignaali puhul kasutatakse tavaliselt 44.1 kHz sagedust ehk diskreeditakse signaali 44100 korda sekundis[7]), kuid seda saab leida ka näiteks Nyquisti teoreemi abil, mille alusel peab diskreetimissagedus olema vähemalt kaks korda suurem sisendsignaali suurimast sagedusest.[8] Ploki suuruse valimisel tuleb arvestada, et mida suurem on N, seda suurem on sageduse resolutsioon, kuid seda pikem on algoritmi tööks kuluv aeg.

Lisaks tuleb arvutada välja järgnevad konstandid:

, kus on otsitav sagedus (inglise keeles target frequency)

Seejärel saab rakendada Goertzeli algoritmi, kasutades kolme muutujat: , ja , millest on hetkeväärtus, eelmine ja üle-eelmine väärtus. Muutujad ja tuleb algväärtustada nulliga iga andmeploki alguses.

Iga sämpli peal tuleb teostada järgnevad tehted:

, kus on vaadeldav sämpel

Pärast tehete teostamist igal N sämplil, saame muutujate lõppväärtusi kasutades leida sagedusploki magnituudi kompleksarvuna:

, kus on eelnevalt arvutatud koosinuse väärtus ning on arvutatava kompleksarvu reaalosa.

, kus on eelnevalt arvutatud siinuse väärtus ning on arvutatava kompleksarvu imaginaarosa.

Seejärel saame leida magnituudi reaalarvulise väärtuse, kasutades järgnevat valemit:

Oluline on enne järgmise sagedusploki juurde suundumist muuta muutujate ja väärtused uuesti nulliks.

Optimiseeritud Goertzeli algoritm[muuda | muuda lähteteksti]

Optimiseeritud Goertzeli algoritm erineb tavalisest Goertzeli algoritmist vaid selle poolest, et algoritmi viimases faasis ei arvutata välja magnituudi reaal- ja imaginaarosa, vaid leitakse magnituud järgneva valemi abil:

Konstantide arvutamine ning sämplite töötlemine toimub samamoodi, nagu tavalises Goertzeli algoritmis. Algoritmi optimiseeritud versioon on rohkem levinud, kuna see on efektiivsem.

Viited[muuda | muuda lähteteksti]

  1. Goertzel, G. (jaanuar 1958), "An Algorithm for the Evaluation of Finite Trigonometric Series", American Mathematical Monthly, 65 (1): 34–35, DOI:10.2307/2310304, JSTOR 2310304
  2. Mock, P. (21. märts 1985), "Add DTMF Generation and Decoding to DSP-μP Designs" (PDF), EDN, ISSN 0012-7515; also found in DSP Applications with the TMS320 Family, Vol. 1, Texas Instruments, 1989.
  3. Chen, Chiouguey J. (juuni 1996), Modified Goertzel Algorithm in DTMF Detection Using the TMS320C80 DSP (PDF), Application Report, Texas Instruments, SPRA066
  4. Schmer, Gunter (mai 2000), DTMF Tone Generation and Detection: An Implementation Using the TMS320C54x (PDF), Application Report, Texas Instruments, SPRA096a
  5. Cheng, Eric; Hudak, Paul (jaanuar 2009), Audio Processing and Sound Synthesis in Haskell (PDF), originaali (PDF) arhiivikoopia seisuga 28. märts 2017
  6. Staff, Embedded (28. august 2002). "The Goertzel Algorithm". Embedded.com (Ameerika inglise). Vaadatud 26. märtsil 2023.
  7. "Sample Rates - Audacity Manual". manual.audacityteam.org. Vaadatud 26. märtsil 2023.
  8. "What is the Nyquist theorem?". WhatIs.com (inglise). Vaadatud 26. märtsil 2023.