Forum: Digitale Signalverarbeitung / DSP / Machine Learning DFT / FFT : Anzahl der Punkte


von Oz z. (ozzy)


Lesenswert?

Moin,

ich habe mal eine kurze Frage, und zwar möchte ich ein FSK-Signal 
demodulieren. D.h, dass die eine Frequenz gesendet wird, wenn eine 
logische 0 gesendet werden soll, und die andere Frequenz bei einer 1. 
Wenn diese Frequenzen nun weit genug auseinander liegen, reicht mir dann 
eine DFT/FFT mit 4 Punkten? Man erhält doch bei N Stellen n/2 
Spektrallinien, und zwei würde ich dabei ja auch brauchen. Oder ist das 
ein Denkfehler?

MfG, und vielen Dank, Ozzy

von dom (Gast)


Lesenswert?

Dein Vektor im Zeitbereich hat die gleiche Länge wie dein Vektor im 
Frequenzbereich. => 4 Sampels => 4 Spektrallinien

von Oz z. (ozzy)


Lesenswert?

Moin,

hm, ich hatte das von dieser Seite hier:
https://ces.karlsruhe.de/culm/culm/culm1/mathematik/signalanalyse/eigenschaften.htm
Da steht:
"Ein Signal, das an n äquidistanten Stellen abgetastet wurde, liefert 
n/2 Spektrallinien. Die Anzahl der Abtastwerte bestimmt also die Anzahl 
der Spektrallinien."

Was ist denn nun richtig? Reichen denn sonst (theoretisch) 2 Punkte???

MfG, Ozzy

von Lars Lochmann (Gast)


Lesenswert?

Du willst also das FSK-Signal demodulieren? Ist nicht so ganz mein 
Fachgebiet, aber meiner Meinung nach wird das nicht über die DFT 
gemacht. Der Umschaltzeitpunkt der Frequenzen dürfte bei der DFT auch 
problematisch sein. Das könnte sich beispielsweise dann störend 
auswirken. Und du kennst ja nicht die Phasenlage des Signals.
In der Wikipedia steht bisschen was zur FSK-Demodulation.
http://de.wikipedia.org/wiki/Frequenzumtastung
und
http://de.wikipedia.org/wiki/Costas_Loop

ciao
Lars

von Oz z. (ozzy)


Lesenswert?

Moin, theoretisch ginge dass, aber ich möchte mehrere Frequnzbereiche 
verwenden, die sich u.a. auch noch ändern können, und möchte es deshalb 
in Software lösen...

MfG, Ozzy

von Unit (Gast)


Lesenswert?

Eine N-Punkt DFT/FFT liefert N "Spektrallinien". Davon tragen (N/2)+1 
redundanzfreie Information. Aber aus einer N-Punkt-DFT/FFT purzeln 
definitiv N bins raus. Dazu kommt das Abtasttheorem, also Du brauchst 
mindestens eine 6-Punkt-DFT, um zwischen zwei Frequenzen (beide > 0) 
unterscheiden zu können. Jetzt kommt es aber: das Problem sind die 
Frequenzen, die müssen sehr genau sein. Die DFT/FFT macht nämlich eine 
gleichmäßige "Abtastung" des Spektrums. Dass heißt, dass die Distanz 
zwischen zwei Abtastpunkten immer gleich ist. Daraus folgt, dass f_1 = 
2*f_0 (f_0 gehört zur logischen 0, f_1 zur 1) bei einer 6-Punkt-DFT sein 
soll. Die Abtastfrequenz muss in dem Fall genau 5*f_0 betragen.
Da die FFT nur bei N=2^x effizient ist, empfiehlt sich eine 8-Punkt-FFT, 
oder eine 4-Punkt-FFT, falls f_0 doch 0Hz sein darf. In dem Fall muss fs 
= 3*f_1 betragen.

von Oz z. (ozzy)


Lesenswert?

Moin,

> Dazu kommt das Abtasttheorem, also Du brauchst
> mindestens eine 6-Punkt-DFT, um zwischen zwei Frequenzen (beide > 0)
> unterscheiden zu können.
sorry, aber das verstehe ich nicht. Sagt das Abtasttheorem nicht nur 
aus, dass die Abtastfreuquenz mindestes doppelt so groß sein muss wie 
die gewünschet maximal zu messende Frequenz?

Die Frequenzen die ich betrachten möchte sind z.B. 9600Hz und 9920Hz. 
Wie viele Punkte müsste ich dann den nehmen? Irgendwie verwirrt mich das 
gerade etwas, da es von meiner Erklärungsvorlage (s.o.) abweicht...

von Unit (Gast)


Lesenswert?

Da musst Du eins der gemeinsamen Vielfachen von 9600 und 9920 finden 
(wegen der oben besagten Gleichmäßigkeit), das größer (und nicht größer 
gleich !!!) ist als das zweifache von 9920 (wegen Abtasttheorem). Das 
wird die benötigte Abtastfrequenz sein. Dann kannst Du die Auflösung (N) 
bestimmen und danach können die zu den obigen Frequenzen gehörenden bins 
berechnet werden.

von Oz z. (ozzy)


Lesenswert?

Moin,

woher kommt das denn, dass ich ein gemeinsames Vielfaches finden muss? 
Mit größer gleich stimmt natürlich...

von Unit (Gast)


Lesenswert?

Wegen der Frequenzauflösung der DFT/FFT. Wenn fs = 100Hz ist und N=10, 
dann beträgt die Auflösung 10Hz. Dass heißt, dass folgende Frequenzen 
"abgetastet" werden: 0Hz, 10Hz, 20Hz, 30Hz, 40Hz (die weiteren Glieder 
werden vom Antialiasing Filter rausgefiltert). Ein Peak bei 5Hz (ein 
Sinussignal mit 5Hz) z.B. kann nicht detektiert werden.

von Oz z. (ozzy)


Lesenswert?

Moin,

aber gibt es da keine Möglichkeit, einen Offset draufzurechnen? Der 
Bereich unter 9600Hz interessiert mich ja nicht. Oder dann eben doch 
direkt den Goertzel für die beiden Spektrallinien, aner das dauert dann 
ja auch fast genauso lange...

von Detlef _. (detlef_a)


Lesenswert?

>>aber gibt es da keine Möglichkeit, einen Offset draufzurechnen

Du kannst für ein Bandpaßsignal undersampling anwenden. Wenn Du ein 
9600Hz Signal mit 9600samples/s abtastet erscheint es als DC, du mischt 
also runter, 9920Hz erscheinen als 320Hz. Aber: 4800Hz erscheinen auch 
als DC, Du muß also sicherstellen (analoge Bandpassfilterung), dass Du 
keine unerwünschten Mischprodukte erzeugst.

Goerzel und gut, das ist eine Multiplikation/sample!

Cheers
Detlef

von Oz z. (ozzy)


Lesenswert?

Danke, das kingt schon einmal echt interessant. Aber dann noch einmal 
eine Frage für mich zum Verständins: Was passiert denn, wenn ich das 
Fenster nur so kurz mache, dass gerade die unterste, von mir gesuchte 
Freuqenz drinliegt (und damit natrülich auch die dadrüber). Werden dann 
die unteren Frequenzen eigentlich noch richtig erkannt?

MfG, Ozzy

von Detlef _. (detlef_a)


Lesenswert?

Du solltest Dir die Eigenschaften der FFT nochmal reinziehen. Mit FFT 
und ohne undersampling würde der Standardansatz so aussehen: 9920 Hz 
Maximalfrequenz heißt Abtastrate mindestens ca. 20kHz, der Abstand 
Deiner Spektrallinien soll 9920-9600 = 320Hz betragen, also ist die 
minimale Fensterlänge 20000/320 ~ 64 Abtastwerte, damit die Dauer des 
Fensters 64/20000~3.2ms.

Du kannst bei der FFT die untere Frequenz nicht auswählen, der erste 
Koeffizient der FFT ist immer der DC Anteil des Signals, der zweite 
Koeffizient ist der Anteil des Sinus, von dem genau eine Welle in das 
Fenster paßt, der hat also die Frequenz Abtastfrequenz/Fensterlänge, der 
nächste Koeff. ist der Anteil des Sinus, von dem zwei Wellen ins Fenster 
passen usw..

So is das mit der FFT.

Cheers
Detlef

von Oz z. (ozzy)


Lesenswert?

Hi,

damit habt Ihr mir schon einmal sehr geholfen, vor allem habe ich das 
mit der FFT jetzt auch mal richtig verstanden (denke ich zumindest...).
Ich bin gerade am überlegen, ob das statt mit einem analogen Bandpass 
auch mit einem Digital Down Converter (DDC) geht... Müsste bei der 
geringen Frequenz ja vielleicht auch auf einem Mikrocontroller gehen...

von Oz z. (ozzy)


Lesenswert?

Moin,

ich habe hier noch etwas dazu gefunden:
Beitrag "Re: Frequenzerkennung 125-140kHz mit dsPIC machbar?"
Zack schreibt da etwas von mit Sinus und Cosinus multiplizieren, geht 
nur leider nicht wirklich weiter darauf ein.
Könnt Ihr mir vielleicht erklären, was er damit meint?

MfG, Ozzy

von Detlef _. (detlef_a)


Lesenswert?

Er mischt Signale. Wenn Du zwei Sinusse miteinander multiplizierst 
erhälst Du die Summen- und die Differenzfrequenz, das nennt sich 
mischen, in der Regel wird die Summenfrequnz durch einen Tiefpaß 
rausgefiltert. Wenn Du ein Sinussignal mit einem Sinus und einem Cosinus 
dergleichen Frequenz multiplizierst und die Summenfrequenzen 
rausfilterst, kriegst Du zwei DC-Signale, die Dir den Phasenwinkel des 
Signals relativ zu Deinem Sinus/cosinus angeben, das nennt sich 
komplexer Mischer.

Das ganze ist angehbar mit Schulmathematik: Mal mit Additionstheoremen 
bißchen an Ausdrücken wie sin(w1+phi)*sin(w2) rumrechnen.

math rulez!
Cheers
Detlef

von Oz z. (ozzy)


Lesenswert?

Ok, dann habe ich das richtig verstanden.

ich möchte ja einfach nur schnellstmöglich feststellen, welche der 
beiden Frequenzen im Signal vorkommen. Ich denke, da ist das vielleicht 
die beste Methode. Oder gibt es da noch etwas besseres? Ich möchte auf 
jeden Fall die ms nicht überschreiten.
Jetzt werde ich auf jeden Fall mal sehen, wie sich das ganze mit 
hinzugefügtem Rauschen verhält...

von Detlef _. (detlef_a)


Lesenswert?

besser und schlechter gibts da nicht. Kommt drauf an was Du willst: 
entweder schnell oder robust mit viel Rauschen. Geringes SNR zwingt 
lange Meßzeit und umgekehrt. Du kannst sicher soviel Rauschen 
hinzufügen, dass das Signal nicht in einer ms zu dekodieren ist bzw. 
solange messen, bis der Sinus 80dB unterm Rauschen noch rauskommt ;-))

Cheers
Detlef

von Oz z. (ozzy)


Lesenswert?

Da hast Du natürlich recht... Aber was würdest Du mir denn raten, um mit 
Software eine FSK zu demodulieren? Ich finde es einfach krass, ca. 3.2ms 
Fensterlänge zu brauchen, um die Frequenzen 9600 und 9920 mit einer 32 
Punkte FFT zu unterscheiden. Was ich suche, ist etwas robustes und 
schnelles, auch wenn sich das eben leider wiederspricht...

von Detlef _. (detlef_a)


Lesenswert?

>>Aber was würdest Du mir denn raten, um mit Software eine FSK zu demodulieren?

Wikipedia FSK Demodulation (en/de) ist ganz gut. Es kommt auf Deine 
Bitrate (wie hoch ist die denn?) im Verhältnis zu Deinem Frequenzshift 
an, Stichwort auch minimum phase shift keying.

Cheers
Detlef

von Detlef _. (detlef_a)


Lesenswert?

Ich schicke den Beitrag nochmal, irgendwas ging schief:


>>Aber was würdest Du mir denn raten, um mit Software eine FSK zu demodulieren?

Wikipedia FSK Demodulation (en/de) ist ganz gut. Es kommt auf Deine 
Bitrate (wie hoch ist die denn?) im Verhältnis zu Deinem Frequenzshift 
an, Stichwort auch minimum phase shift keying.

Cheers
Detlef

von Oz z. (ozzy)


Lesenswert?

Naja, also 1kbit würde ich schon gerne erreichen. Das würde aber eben 
auch bedeuten, die Frequenzanalyse max. 1ms dauern müsste. Und wie 
gesagt, das soll alles in Software geschehen, also keine extra Schaltung 
mit Spulen u.s.w.

von ME (Gast)


Lesenswert?

Analog würde ich die FSK-Demodulation mit einer PLL lösen und PLL lässt 
sich auch in Software realisieren. Details findest du z.B. im Buch 
"Theorie und Anwendungen des Phase-locked Loops"
von Roland Best (eine der späteren Ausgaben).

Ob Software-PLL eine praktikable Lösung ist, weiss ich nicht, aber 
vielleicht findet sich ja hier jemand, der sich damit auskennt.

von Detlef _. (detlef_a)


Lesenswert?

read the friendly Wikipedia:

>>>
Die maximal erzielbare Bitrate bps, welche bei binärer FSK gleich der 
Symbolrate ist, hängt nur von dem Frequenzhub ab und beträgt:
    bps = 2 *Delta f
<<<

Und das heißt aufwendige kohärente Demodulation, bei nichtkohärenter 
Demodulation hast Du die Hälfte. Also: Birate runter oder Frequnzhub 
rauf.

gute Nacht
Detlef

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.