Görtzel Algorithmus

Dec 02, 2010 5 Replies

Hallo zusammen,



ich habe eine Frage zum G=F6rtzel Algorithmus. Unter

formatting link
gibt es eine sch=F6ne Erl=E4uterung. Dabei werden f=FCr die Festlegung der Blockgr=F6=DFe folgende Punkte genannt:


-------------------------------------------------------- Goertzel block size N is like the number of points in an equivalent FFT. It controls the frequency resolution (also called bin width). For example, if your sampling rate is 8kHz and N is 100 samples, then your bin width is 80Hz.



This would steer you towards making N as high as possible, to get the highest frequency resolution. The catch is that the higher N gets, the longer it takes to detect each tone, simply because you have to wait longer for all the samples to come in. For example, at 8kHz sampling, it will take 100ms for 800 samples to be accumulated. If you're trying to detect tones of short duration, you will have to use compatible values of N.



The third factor influencing your choice of N is the relationship between the sampling rate and the target frequencies. Ideally you want the frequencies to be centered in their respective bins. In other words, you want the target frequencies to be integer multiples of sample_rate/N.



The good news is that, unlike the FFT, N doesn't have to be a power of two.



--------------------------------------------------------



Ich habe 2 Fragen:


1.) Wie kann ich mir die BINs vorstellen. Im Text werden diese auch als Frequenzauf=F6sung bezeichnet. Ist meine Annahme richtig, das bei einem BIN von 80Hz mein erfasstes Signal sozusagen in 80Hz Bl=F6cke aufgel=F6st wird?


2.) Wenn meine Annahme unter Punkt 1 stimmt, wie ist es dann zu verstehen, das f=FCr eine zentrale Anordnung meiner Zielfrequenz in den BINs, die Zielfrequenz ein ganzzahliges Vielfaches der Sampelfrequenz/ N sein muss.



Annahme: Sampelrate =3D 8kHz Blockgr=F6=DFe =3D 400 Wunsch Zielfrequenz =3D 100Hz



Pr=FCfung auf ganzahliges Vielfaches:



5*8kHz/400 =3D 100Hz Bedingung erf=FCllt: 5 ist ganzahliges Vielfaches

Bei der Samplefrequenz von 8kHz und einer Blockgr=F6=DFe von N=3D400 ergibt sich ein BIN von 8kHz/400=3D20Hz. Wenn meine Annahme von Punkt 1 richtig ist, d.h. also mein Signal in 20Hz Bl=F6cke aufgeteilt wird, liegt meine Zielfrequenz allerdings nicht in der Mitte eines 20Hz Blocks, sondern direkt auf dem Rand, da 5*20Hz =3D 100Hz.



Wo habe ich einen Gedankenfehler?



Vielen Dank f=FCr Eure Hilfe.



Gru=DF Michael



Nein, das sind die Stützstellen, an denen der Wert des Spektrums ermittelt wird.

Gruß Henning

Ja. Wobei man "Nachbar-Bins" betrachten kann und dann sehen wie weit die Frequenz von der Bin-Mitte abweicht und in welcher Richtung. Klappt aber nur wenn dort kein anderes Signal spektral in der Naehe sitzt.

Ein Goertzel ist wie eine DFT oder auch eine FFT zu sehen. Man hat nur so viele Bins wie die Sample Frequenz erlaubt. Zum Messen "zwischen den Stuehlen" gibt es viele Moeglichkeiten. Einmal die Betrachtung mehrerer Bins, dann auch noch andere Tricks wie Phasenmodulation des Eingangssignals.

100Hz liegt schon in einem Bin, 110Hz wuerde dagegen zwischen zwei Bins sitzen. Vielleicht hilft diese Erlaeuterung:

formatting link

[...]
Gruesse, Joerg http://www.analogconsultants.com/ "gmail" domain blocked because of excessive spam. Use another domain or send PM.

Hallo zusammen,

vielen Dank f=FCr die Antworten. Mit der Betrachtung von BINs als St=FCtzstelle ist f=FCr mich auch die Aussage, das die "Zielfrequenz ein ganzzahliges Vielfaches der Sampelfrequenz/N sein muss" nachvollziehbar.

Bei meinem genannten Beispiel liegt damit die Zielfrequenz genau auf einer St=FCtzstelle.

  1. Frage: Bleiben wir bei meinem obigen Beispiel.

Sampelrate =3D 8kHz Blockgr=F6=DFe =3D 400 Zielfrequenz =3D 100Hz

Mit der Blockgr=F6=DFe von 400 bei 8 kHz Sampelfrequenz erreiche ich eine Frequenzaufl=F6sung von 8kHz/400 =3D 20Hz. Aufgabe ist es nur eine Zielfrequenz bei 100Hz zu erfassen. Hat es, mit dem Hintergrund nur eine Zielfrequenz zu erfassen, einen Vorteil die Blockgr=F6=DFe von 400 auf 800 zu erh=F6hen und damit die Frequenzaufl=F6sung von 20Hz auf 10Hz zu steigern?

  1. Frage: Gibt es eine Absch=E4tzungm=F6glichkeit, wie gro=DF der Fehler meine Messun= g ist, wenn meine Zielfrequenz nicht genau auf einem BIN liegt?

Vielen Dank.

Gru=DF Michael

Naja, mach halt mehrere Messungen hintereinander und schau Dir an, wie die Phase so läuft. Wenn mehrere Signalquellen in dem passenden Eimer landen, kommt dabei natürlich Müll heraus.

Und definiere mal Dein Fehlermaß: was ist für Dich ein Fehler? Abhängig davon kann man eine Fensterfunktion und eine Auswertung machen, die den systematischen Fehler minimiert.

David Kastrup

Das kommt darauf an wieviel Rauschen, Muell, Getoese und sonstwas im auszuwertenden Signal liegt. Wenn Dein 100Hz Ton nur so gerade eben da rausguckt kann sich eine Verringerung der Blockgroesse (ist keine Erhoehung :-)) lohnen.

Du koenntest z.B. per Goertzel die Nachbar-Bins rechts und links betrachten. Wenn der Stoerabstand Deines Signals gross genug ist sagt Dir das etwas darueber aus wohin der Ton abweicht und wie viel.

So etwas haben Leute auch bei DTMF-Dekodierung gemacht, aber mit mehr Toenen und da kommt natuerlich irgendwann der Punkt wo man besser gleich eine FFT macht.

Gruesse, Joerg http://www.analogconsultants.com/ "gmail" domain blocked because of excessive spam. Use another domain or send PM.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required