Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Algorithme de Goertzel — Wikipédia
Algorithme de Goertzel — Wikipédia 👆 Click Here! Read More..
Un article de Wikipédia, l'encyclopédie libre.

Cet article est une ébauche concernant l’informatique, les mathématiques et l’électronique.

Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants.

L'algorithme de Goertzel est un algorithme utilisé en traitement du signal pour détecter la présence d'une fréquence dans une séquence d'échantillons. Il fut publié par le physicien américain, Gerald Goertzel (en), en 1958[1]. Il s'agit d'une méthode efficace pour évaluer un terme particulier de la transformée de Fourier discrète; elle ne nécessite qu'une multiplication et deux additions par échantillon.

Pseudo-code

[modifier | modifier le code]

Pseudo-code[2]


N = taille_du_bloc ; 
samples[N]; // échantillons 
FI = fréquence_à_détecter; 
FS = fréquence_échantillonnage; 
k = (int)(0.5 + (N*FI/FS)); 
ω = 2 * π * k / N; 
cosine = cos(ω); 
sine = sin(ω); 
coeff = 2 * cos(ω); 
scale = N / 2; 

Q0 = Q1 = Q2 = 0; 

pour i de 0 à N-1 
  Q0 = samples[i] + (coeff * Q1) - Q2;
  Q2 = Q1; 
  Q1 = Q0; 
end 

real = (Q0 - (Q1 * cosine)) / scale; 
imag = (- Q1 * sine) / scale; 
puissance = sqrt(real * real + imag * imag); 

Code C++

[modifier | modifier le code]

// Fonction pour calculer l'amplitude fréquentielle avec l'algorithme de Goertzel
double goertzelAmplitude(const double *signal, int signalLength, double frequency, int sampleFrequency)
{
    double W;
    double sine;
    double cosine;
    double Q0, Q1, Q2;
    double real;
    double imag;
    double scalingFactor;
    scalingFactor = signalLength / 2.0;
    
    int K = (int) (0.5+((signalLength * frequency) / sampleFrequency));
    W = (2.0 * M_PI * K) / signalLength;
    cosine = cos(W);
    sine = sin(W);
    double coefficient = 2 * cosine;

    Q0 = 0;
    Q1 = 0;
    Q2 = 0;

    for (int i=0 ; i<signalLength ; i++)
    {
        // Blacman window
        // Q0 = (0.426591 - .496561*cos(2*M_PI*i/signalLength) +.076848*cos(4*M_PI*i/signalLength))*signal[i]+(coefficient * Q1) - Q2;
        // Normal acquisition
        Q0 = signal[i]+(coefficient * Q1) - Q2;
        Q2 = Q1;
        Q1 = Q0;
    }
    
    real = (Q1 - (Q2 * cosine)) / scalingFactor;
    imag = (Q2 * sine) / scalingFactor;
    //real=cosine*Q1-Q2;
    //imag=sine*Q1;
    return sqrt(real * real + imag * imag);
}


Voir aussi

[modifier | modifier le code]
  • DTMF

Notes et références

[modifier | modifier le code]
  1. ↑ Gerald Goertzel, An Algorithm for the Evaluation of Finite Trigonometric Series, The American Mathematical Monthly, Vol. 65, No. 1 (janvier 1958), p. 34-35
  2. ↑ Kenvin Banks, « "The Goertzel algorithm" », 2002
  • icône décorative Portail des mathématiques
  • icône décorative Portail de l'informatique théorique
Ce document provient de « https://fr.teknopedia.teknokrat.ac.id/w/index.php?title=Algorithme_de_Goertzel&oldid=227790438 ».
Catégories :
  • Théorie de Fourier
  • Algorithme numérique
  • Transformée du signal
Catégories cachées :
  • Wikipédia:ébauche informatique
  • Wikipédia:ébauche mathématiques
  • Wikipédia:ébauche électronique
  • Article contenant un appel à traduction en anglais
  • Portail:Mathématiques/Articles liés
  • Portail:Sciences/Articles liés
  • Portail:Informatique théorique/Articles liés
  • Portail:Informatique/Articles liés

  • indonesia
  • Polski
  • الرية
  • Deutsch
  • English
  • Español
  • Français
  • Italiano
  • مصر
  • Nederlands
  • 本語
  • Português
  • Sinugboanong Binisaya
  • Svenska
  • Українска
  • Tiếng Việt
  • Winaray
  • 中文
  • Русски
Sunting pranala
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022
Email: pmb@teknokrat.ac.id