DFT / FFT : Anzahl der Punkte

OP #1621594
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
Gast #1621638
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
Gast #1621983
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.
OP #1622022
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...
Gast #1622168
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.
Gast #1622257
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.
OP #1622276
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...
#1622365
>>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
OP #1622957
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
#1623364
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
OP #1626128
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...
#1626416
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
OP #1626671
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...
#1626716
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
OP #1626722
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...
#1626896
>>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
#1626908
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
OP #1627189
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.
Gast #1627448
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.
#1627533
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.