Forum: Digitale Signalverarbeitung / DSP / Machine Learning Görtzel Algorithmus einfach erklärt


von Marco S. (hochfrequenz)


Lesenswert?

Es geht um den Görtzel Algorithmus zum Erkennen einer Frequenz  (Stufe 
1) und zum Erkenn von 2 gleichzeitig gesendeten Frequenzen (Stufe 2).

Jetzt muss man den Algorithmus aber erst mal verstehen. Und schaut man 
da ins www und in die Literatur, gibt es gleich volle Breitseite an 
Mathematik.

Ich kann mich aber an einen Lehrer erinnern, der das ganze mal 
anschaulich(er) erklärt hat Ich bekomme allerdings nicht mehr alles 
zusammen und hoffe auf eure Hilfe.

Die zu erkennende Frequenz ist bekannt: z.B. 1000Hz Sinus, Die Tondauer 
beträgt 1ms (= 1 Periode)
Eingangsseitig kommt ein Frequenzwirrwarr an.

1)
Man sampelt die Eingangsamplituden des Frequenzgemisches und speichert 
diesen Fortlaufend im Speicher E (1. Frage: was ist die minimale 
sampling-Rate hier? 2. Frage: Wie viel Speicherplätze belege ich). Die 
Speicherplätze nenne ich E1 bis E?) E wie Eingang.

2)
Irgendwann läuft der Seicher über und ich überschreibe den ältesten 
sample
(richtig so?)

3)
Vorher habe ich ein sample aufgenommen nur vom gesuchten 1000Hz-Ton. 
Diese Amplitudenwerte habe ich in einem Festspeicher F abgelegt.
(3. Frage: Welche sampling-Rate? 4. Frage: wie viel von meinem 
1000Hz-Ton muss gesampelt werden?)
Die Speicherplätze nene ich F1 bis F?)  F wie Fest

4)
Jetzt sagte der Lehrer: Stellen wir uns auf einer Zeitachse eine Periode 
des 1000Hz-Tones vor. Er beginnt bei 0s, verläuft dann sinusförmig bis 
zum Zeitpunkt 1ms. Dann stellt man sich vor, es kommt von links ein 
1000Hz-Sinus (auch nur eine Periode lang). Der fährt dann von links nach 
rechts praktisch über den feststehenden ersten 1000Hz-Ton, bis er dann 
rechts verschwindet.

edit: unter Faltung bei wikipedia wird das gezeig, jedoch nur mit einem 
Rechteck.

5) Während der Überschneidungsphase multipliziere ich im Abstand von 
(???  0,x ms) einzelne Punkte der beiden Signale und addiere diese 
Einzelwerte zur Summe S.
Das Ergebnis ist Null, wenn beiden Signale sich nicht überschneiden. 
Sobald aber eine Überschneidung stattfindet, steigt die Summe S an. Sie 
erreicht ihren Höchstwert, wenn beide Signale exakt übereinader liegen. 
Sie nimmt wider ab, wenn das sich bewegende 1000Hz-Signal nach rechts 
verschwindet. S ist wider Null, wenn beide Signale nicht übereinander 
liegen.

Rechnerisch haben wir also das sample E1 mit A1 multipliziert, das 
sample E2 mit A2 multipliziert, das sample E3 mit A3 multipliziert bis 
E? mit A?. Daraus haben wir die Summe S1 gebildet.
Dann wanderte das Eingnagssignal um eins nach rechts und wieder haben 
wir E1(neu) mit A1 multipliziert, E2(neu) mit A2 multipliziert

Irgendwann gab es einen Scheitelwert für die Summe S. Wenn dieser groß 
ist (Frage: Wie ermittel ich denn den Schwellwert?, habe ich tatsächlich 
einen 1000Hz-Sinus empfangen).


6) Probiert man das mit einem Eingangssignal ungleich 1000Hz, wird dder 
Scheitelwertt dieser Berechnung immer kleiner sein als der Scheitelwert, 
wenn 2 gleiche Frequenzen vorliegen.


Und jetzt die Frage an diejenigen, die den Görtzel richtig kennen: Ist 
das so?

Und wenn ja? Kann jemand meine Fragen iregndwie einfach beantworten.

Wie sieht dann diese Summenformel auf mathematisch aus, welche ich oben 
beschrieben habe:  E1 wird mit A2 multipliziert und E2 wird mit A2... 
ergibt Summe S

Isdt jemand in der Lage dieses übereinaderschieben eines Sinuses inkl. 
dem Summenergebnis mal als Bild(er) darzustellen oder gibt es dass 
vielleicht schon?


Grüße
Hochfrequenz

: Bearbeitet durch User
von rava (Gast)


Lesenswert?

uns wurde genau dieser Algorithmus in Regelungstechnik als 
Matching-Filter verkauft.
http://en.wikipedia.org/wiki/Matched_filter
Wenn man die Seite zum Goertzel anschaut (die ich nicht kannte), wird da 
von FFT gesprochen. Also im Frequenzbereich. Das was du beschreibst ist 
im Zeitbereich.
Was denn nu?

Marco Schramm schrieb:
> Rechnerisch haben wir also das sample E1 mit A1 multipliziert, das
> sample E2 mit A2 multipliziert, das sample E3 mit A3 multipliziert bis
> E? mit A?. Daraus haben wir die Summe S1 gebildet.
Müsste laut deiner Beschreibung nicht E1 mit A? und E2 mit A?-1 und so 
weiter multipliziert werden? Also ein Signal gespiegelt werden?
(ich nehme mal an mit A meinst du F :D)

Marco Schramm schrieb:
> was ist die minimale sampling-Rate
Nach Shannon immer mindestens doppelte Bandbegrenzung. Lieber deutlich 
mehr. Für E hängt es also davon ab, was in einem Signal vorkommt. A/F 
sollte sinnvollerweise mit derselben Frequenz abgetastet sein. Wenn's 
mal funktioniert, kannst du mit Interpolation experimentieren, denn 
theoretisch genügen für A/F 2kHz

Marco Schramm schrieb:
> Wie sieht dann diese Summenformel auf mathematisch aus
schau mal in meinen wikilink. das ist die erste Gleichung da.

von chris (Gast)


Lesenswert?

Einfach erklärt funktioniert der Görtzel-Algorithmus ungefähr so:
Das Eingangssignal wird mit Sinus- und Cosinus multipliziert, danach 
integriert und der Betrag berechnet. Letzendlich entspricht das einer 
Linie einer Fourier-Transformation.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.