L'utilisation de l'algorithme de Goertzel donne-t-elle réellement une meilleure résolution de fréquence?

19

Je lis cet article et je suis un peu confus par l'utilisation libérale de l'auteur de la «résolution de fréquence» concernant l'algorithme de Goertzel.

Question de base: l'utilisation de l'algorithme de Goertzel vous donne-t-elle réellement plus de résolution en fréquence sur une bande d'intérêt spécifique, ou calcule-t-elle simplement efficacement la FFT uniquement sur la bande d'intérêt spécifiée, mais à la même résolution en fréquence spécifiée par une fréquence d'échantillonnage divisée par un nombre d'échantillons?

Par exemple, supposons que soit 100 KHz, (fixe) et que le nombre d'échantillons de données soit 10000. (Également fixe). Si je calcule une FFT normale, où la longueur de la FFT est également N , ma résolution en fréquence est \ frac {F_s} {N} comme prévu, et elle sera égale à 10 Hz. Cela signifie que mes bacs sont séparés de 10 Hz, de -50 000 Hz à 50 000 Hz. NFsNF sNFsN

Supposons maintenant que je souhaite utiliser l'algorithme Geortzel pour ne regarder que les fréquences comprises entre 20 000 et 21 000 Hz. Si j'utilise le même N pour le nombre d'échantillons et que j'utilise le même N pour ma taille FFT, alors quelle est ma résolution en fréquence? Toujours à 10 Hz? Ou est-ce 21,00020,00010000=0.1 Hz?

J'ai le sentiment que je n'augmente pas vraiment ma résolution de fréquence, autant que simplement l'interpolation de points sur le lobe principal, en utilisant le même N pour évaluer les fréquences de 21000 à 20000 comme je l'ai fait de 0 à 50000.

Est-ce une bonne compréhension?

Spacey
la source

Réponses:

18

Votre compréhension est correcte.

Les algorithmes de Goertzel donnent presque exactement le même résultat que 1 bin d'une DFT ou FFT de la même longueur ou du même nombre d'échantillons (et où les facteurs de torsion FFT sont générés par une récursion trig), lorsqu'ils sont utilisés pour des fréquences qui sont exactement des nombres entiers périodiques dans le Longueur du Goertzel. Mais de nombreuses formes de l'algorithme de Goertzel ne fournissent que l'amplitude, pas le résultat complexe ou la phase du résultat bin FFT 1. De plus, d'un point de vue informatique, un Goertzel générique peut être numériquement légèrement moins stable qu'un FFT générique. Pour les fréquences non entières-périodiques en ouverture, le résultat est équivalent à une interpolation sinc entre les bins d'un DFT ou FFT de même longueur (qui peut être légèrement plus précise d'une interpolation que l'interpolation parabolique plus typique des résultats FFT ).

On peut dire que l'interpolation augmente la résolution au sens graphique (plus de points de tracé) ou facilite le repérage visuel des maxima, mais pas au sens théorique de l'information, ni pour mieux séparer 2 raies spectrales rapprochées comme 2 pics séparés.

hotpaw2
la source
3
Deuxième paragraphe: Très bien dit hotpaw2. C'est ce que je pense confond beaucoup de gens. Oui, il semble donc que le Goertzel Algo soit un moyen rapide de calculer la FFT sur une sous-bande sélectionnée, avec une interpolation de domaine F intégrée également, si vous gardez tout comme si vous deveniez normal FFT.
Spacey
1

Je n'ai pas pu accéder à l'article dont vous parliez, mais je pense que vous trouverez celui-ci assez intéressant. Les auteurs ont présenté leur version de l'algorithme de Goertzel qui peut être utilisée pour trouver des amplitudes et des phases à des fréquences qui sont des multiples non entiers de la fréquence fondamentale dans le signal donné. Cela signifie que leur algorithme améliore la résolution de fréquence. L'article contient la preuve mathématique et le code de l'algorithme.

mac13k
la source