Forum: Digitale Signalverarbeitung / DSP / Machine Learning Frequenzpeak detektieren


von Christoph M. (mchris)


Lesenswert?

Kennt jemand ein Verfahren ohne FFT, mit dem man die Frequenz mit der 
maximalen Amplitude in einem Spektrum finden kann?

Gibt es einen Algorithmus, der mit wenig Rechenaufwand den Frequenzpeak 
findet und dann die Frequenz tracked?

von Harald W. (wilhelms)


Lesenswert?

Christoph M. schrieb:

> Kennt jemand ein Verfahren ohne FFT, mit dem man die Frequenz mit der
> maximalen Amplitude in einem Spektrum finden kann?

DFT. Der Peak muss ja nicht im vorgegebenen Frequenzraster der FFT 
liegen.

von Sven B. (scummos)


Lesenswert?

Harald W. schrieb:
> Christoph M. schrieb:
>
>> Kennt jemand ein Verfahren ohne FFT, mit dem man die Frequenz mit der
>> maximalen Amplitude in einem Spektrum finden kann?
>
> DFT. Der Peak muss ja nicht im vorgegebenen Frequenzraster der FFT
> liegen.

Hä? Was hat die Antwort mit der Frage zu tun und warum spielt es hier 
eine Rolle, ob der Peak auf das Raster passt?

Hast du denn irgendwelches Vorwissen über das Signal, also ist das nur 
ein Sinus, oder ...?

von Werther (Gast)


Lesenswert?

Harald W. schrieb:
> Christoph M. schrieb:
>
>> Kennt jemand ein Verfahren ohne FFT, mit dem man die Frequenz mit der
>> maximalen Amplitude in einem Spektrum finden kann?
>
> DFT. Der Peak muss ja nicht im vorgegebenen Frequenzraster der FFT
> liegen.

Was ist denn das für eine lächerliche Antwort?

DFT -> Diskrete Fourier Transormation
FFT -> Fast Fourier Transformation.

https://de.wikipedia.org/wiki/Schnelle_Fourier-Transformation

https://de.wikipedia.org/wiki/Diskrete_Fourier-Transformation

Lesen & lernen.

von Harald W. (wilhelms)


Lesenswert?

Sven B. schrieb:
/
>> DFT. Der Peak muss ja nicht im vorgegebenen Frequenzraster der FFT
>> liegen.
>
> Hä? Was hat die Antwort mit der Frage zu tun und warum spielt es hier
> eine Rolle, ob der Peak auf das Raster passt?

Nun, wenn du mit einer FFT z.B. 8 und 16 MHz abtastest, der Peak
aber bei 13 MHz liegt, passt das irgendwie nicht.

von Sven B. (scummos)


Lesenswert?

Harald W. schrieb:
> Sven B. schrieb:
> /
>>> DFT. Der Peak muss ja nicht im vorgegebenen Frequenzraster der FFT
>>> liegen.
>>
>> Hä? Was hat die Antwort mit der Frage zu tun und warum spielt es hier
>> eine Rolle, ob der Peak auf das Raster passt?
>
> Nun, wenn du mit einer FFT z.B. 8 und 16 MHz abtastest, der Peak
> aber bei 13 MHz liegt, passt das irgendwie nicht.

Dann fittest du eine Parabel an den Peak, oder wenn du pedantisch sein 
willst die FFT deiner Fensterfunktion, und fertig. Wo die Bins der FFT 
liegen spielt eigentlich sehr selten eine Rolle.

: Bearbeitet durch User
von Dieter F. (Gast)


Lesenswert?

Harald W. schrieb:
> DFT. Der Peak muss ja nicht im vorgegebenen Frequenzraster der FFT
> liegen.

Ich musste da erstmal nachlesen. Meinst Du das ernst?

"Die Verarbeitungszeit für einen Algorithmus hängt wesentlich von der 
Anzahl Multiplikationen ab, die ein Rechner ausführen muss. Der Aufwand 
zur Berechnung der N Spektralwerte beträgt mit der DFT ca. N2 komplexe 
Multiplikationen.

Cooley und Tukey haben 1965 die Fast Fourier Transformation entwickelt. 
Mit dem FFT Algorithmus lassen sich die N DFT-Werte mit einem Aufwand 
von ca. N·log2(N) komplexen Multiplikationen berechnen, was einer 
enormen Reduktion des Aufwands entspricht. Für eine Blocklänge von 
N=1024 zum Beispiel müssten mit der DFT ca. 1 Million Multiplikationen 
berechnet werden, während mit der FFT nur ca. 10’000 Multiplikationen 
anfallen.

Es gibt allerdings Anwendungen (z.B. Detektion DTMF-Wählton), in denen 
nur wenige Spektralwerte interessieren. In diesen Anwendungen kann es 
durchaus vorteilhaft sein, mit der DFT die wenigen Spektralwerte direkt 
und nicht mit der FFT alle möglichen DFT-Werte zu berechnen. Mit dem 
Görtzel-Algorithmus [2] ist es z.B. möglich, einzelne DFT-Werte X[m0]
mit IIR-Filtern 1. bzw. 2. Ordnung rekursiv zu berechnen.

Die Grundidee bei der FFT besteht darin, eine N-Punkt DFT in zwei 
N/2-Punkt DFTs aufzuteilen, eine über die geraden und eine über die 
ungeraden Abtastwerte."

So wie ich das verstehe macht DFT nur Sinn, wenn das gesuchte Frequenz 
-Band bzw. die gesuchten Frequenzen bekannt sind - oder? (O.K., ich bin 
Laie)

von Christoph M. (mchris)


Lesenswert?

Sven B.
>Hast du denn irgendwelches Vorwissen über das Signal, also ist das nur
>ein Sinus, oder ...?

Es geht mir erst mal ganz allgemein um einen Algorithmus. Irgendwo hier 
im Forum hat mal einer Frequenzdetekion im Spektrum mit Nulldruchgängen 
gemacht. Es könnte sein, dass man über ein Histogramm der 
Nulldurchgangsabstände etwas über die häufigste Frequenz aussagen kann.
Eine andere Idee wäre vielleicht, eine Peak mit einer FLL zu tracken.

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Christoph M. schrieb:
> Frequenzdetekion im Spektrum mit Nulldruchgängen gemacht.

Das sieht mir so aus, also ob du in einem Zeitsignal eine Frequenz 
erkennen möchtest. Dazu ist u.a. das Goertzelfilter geeignet.

von Lukas (Gast)


Lesenswert?

Joe G. schrieb:
> Christoph M. schrieb:
>> Frequenzdetekion im Spektrum mit Nulldruchgängen gemacht.
>
> Das sieht mir so aus, also ob du in einem Zeitsignal eine Frequenz
> erkennen möchtest. Dazu ist u.a. das Goertzelfilter geeignet.

Wenn man weiß welche ja. So wie ich das verstanden habe wird hier jedoch 
die "stärkste" Frequenz im Spektrum gesucht.

von Rechenfreak (Gast)


Lesenswert?

Wenn sich die Frequenz, die maximal ist, nur langsam ändert, reicht ein 
Görzel mit einengenden Bändern, um diese zu finden und zu verfolgen. 
Habe ich schon gemacht.

von Christoph M. (mchris)


Lesenswert?

Rechenfreak (Gast)
>Wenn sich die Frequenz, die maximal ist, nur langsam ändert, reicht ein
>Görzel mit einengenden Bändern, um diese zu finden und zu verfolgen.
>Habe ich schon gemacht.

Das ist eine interessante Idee. Den Görtzelfilter als Bandpass nutzen 
und dann einfach im Ergebnis die Nulldurchgänge messen. Für sehr kleine 
Frequenzänderungen vermutlich geeignet.

Mal sehen, ob es noch andere Verfahren für größere Frequenzbereiche 
gibt.

von Martin S. (strubi)


Lesenswert?

Christoph M. schrieb:
> Gibt es einen Algorithmus, der mit wenig Rechenaufwand den Frequenzpeak
> findet und dann die Frequenz tracked?

Ja, der Goertzel wurde ja schon erwähnt, wenn du mal auf die Frequenz 
"gelockt" hast, kannst du die Verstimmung per Phase nachtracken, 
vorausgesetzt andere Signalkomponenten sauen nicht mit Artefakten rein.
Für so adaptive Sachen sind auch sliding DFT-Ansätze interessant, die 
kannst du soweit mit Bandpässen kombinieren, dass dir eben nicht mehr 
viel reinsaut, wenn du mal weisst, wonach du suchst.
Die Sliding-DFT kostet nicht immens Rechenzeit, also hier von "DFT" 
nicht abschrecken lassen :-)

von Raymund Hofmann (Gast)


Lesenswert?

Wie wäre eine Autokorrelation? Also im Frequenzbereich wird ja damit 
quasi jede Frequenz vom Betrag quadriert.
In zweiter Ordnung wäre das jede Frequenz vom Betrag hoch 4.
Also ein Unterschied vom Faktor 2 wird zu 16.

Der Fehler bei simpler Nulldurchgangs-Periodenmessung wird damit schon 
deutlich eingegrenzt.

Die Autokorrelation muss natürlich über mindestens so viele Samples wie 
die Periode der niedrigsten Frequenz im Signal um die es geht laufen.

Und Autokorrelation ist ab einer gewissen Samplezahl so ca. ab 64 wohl 
effektiver mit FFT realisiert.

Ohne genau zu wissen was eigentlich erreicht werden soll, ist es wohl 
schwer etwas "besseres" als eine fft zu finden.

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.