Forum: Digitale Signalverarbeitung / DSP / Machine Learning Exakte Interpretation des FFT-cores


von Ranga Yogibaer (Gast)


Lesenswert?

Angenommen, man speist in einen VDHL-FFT-Core 128 Werte ein, dann erhält 
man 2x64 Frequenz/Intensitäts-Paare. Wenn die Daten aus einem ADC 
stammen, der mit 32kHz abgetastet wurde, müsste die Auflösung dann 
32.000/128 - oder 32000/64 sein?

Sinn ergibt ja eigentlich nur das erste, wobei man zu einer Auflösung 
von 1:250 gelangt. Wie genau ist da die Zuordnung?

Heisst dass, dass der erste Wert die Bereiche 0 ... 299 Hz abdeckt und 
de zweite 250Hz ... 499 Hz oder muss ich das überlappend interpretieren?

Nummer 0:   0,00 ... 499,99 mit Schwerpunkt bei 250
Nummer 1: 250,00 ... 749,99 mit Schwerpunkt bei 500
Nummer 1: 500,00 ... 999,99 mit Schwerpunkt bei 750

?

: Verschoben durch Admin
von Ranga Yogibaer (Gast)


Lesenswert?

Ach ja, noch vergessen:

Reicht es, die erste und die letze Nummer zu ignorieren, wenn man den 
Gleichanteil und das AA im oberen Bereich weg haben will?

von Johann (Gast)


Lesenswert?

So viel ich weis ist das bei einer FFT so das Du 32000/64 erhälst. 
Einige liefern auch noch den DC Anteil mit ist dann der 0 Wert

von Ranga Yogibaer (Gast)


Lesenswert?

Naja, die Daten sind ja spiegelsymmetrisch und daher mehr oder weniger 
indentisch.

Der DC-Anteil müsste meines Erachtens in der ersten Datengruppe 
enthalten sein, weil alle Frequenzen ab 0 enthalten sind.

von Klaus Falser (Gast)


Lesenswert?

Ranga Yogibaer schrieb:
> Der DC-Anteil müsste meines Erachtens in der ersten Datengruppe
> enthalten sein, weil alle Frequenzen ab 0 enthalten sind.

Der 0. Wert enthält nicht den DC Anteil, sondern IST der DC Anteil.

Ranga Yogibaer schrieb:
> Nummer 0:   0,00 ... 499,99 mit Schwerpunkt bei 250
> Nummer 1: 250,00 ... 749,99 mit Schwerpunkt bei 500
> Nummer 1: 500,00 ... 999,99 mit Schwerpunkt bei 750

Nix Schwerpunkt usw.

Wert 0 ist DC (Frequenz 0)
Wert 1 ist 250 Hz
Wert 2 ist 500 Hz usw.

Die FFT ist eine Frequenzzerlegung, bei 128 Stützpunkten bekommst Du 64 
Frequenzwerte.
Außerdem solltest Du beachten, dass die Ergebniswerte komplexe Zahlen 
sind.

von Johann (Gast)


Lesenswert?

Wie ist es denn bei dem IP-Core mit der Genauigkeit. Normalerweise 
bekommt man ja immer Float oder Double Werte zurück. Wie ist des denn 
bei dem IP-Core?

von Frager (Gast)


Lesenswert?

> Der 0. Wert enthält nicht den DC Anteil, sondern IST der DC Anteil.
Wo bleiben dann die Frequenzen, die kleiner sind, als der Erstwert?

Wie bilden sich Zwischenfrequenzen ab? - Die FFT enthält ja nicht nur 
die ein Freqqenz, die angegeben ist, sondern eine Bandbreite.

von Klaus F. (kfalser)


Lesenswert?

Frager schrieb:
>> Der 0. Wert enthält nicht den DC Anteil, sondern IST der DC Anteil.
> Wo bleiben dann die Frequenzen, die kleiner sind, als der Erstwert?
>
> Wie bilden sich Zwischenfrequenzen ab? - Die FFT enthält ja nicht nur
> die ein Freqqenz, die angegeben ist, sondern eine Bandbreite.

Eine DFT (Discrete Fourier Transformation) Zerlegung, von der die FFT 
ein Spezialfall ist, enthält keine Zwischenfrequenzen!
Da möchte ich hier nicht erkären, das soll man sich im Netz nachlesen. 
Die Wikipedia-Seiten sind recht hochmathematisch, sicherlich finden sich 
auch verständlichere Darstellungen.
Es ist jedenfalls so, dass man, je weniger Abtastpunkte man verwendet, 
umso weniger Frequenzpunkte zurückbekommt. Will man das Signalspektrum 
höher auflösen (mehr Frequenzpunkte) muss man die FFT länger machen.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Klaus Falser schrieb:
> Eine DFT (Discrete Fourier Transformation) Zerlegung, von der die FFT
> ein Spezialfall ist, enthält keine Zwischenfrequenzen!
Allerdings möchte ich behaupten, dass im angesprochenen Beispiel (mit 
250Hz Abstand) durchaus auch eine Frequenz mit 249,9 Hz oder gar 375Hz 
im Spektrum auftauchen wird...

von Klaus F. (kfalser)


Lesenswert?

Lothar Miller schrieb:
> Klaus Falser schrieb:
>> Eine DFT (Discrete Fourier Transformation) Zerlegung, von der die FFT
>> ein Spezialfall ist, enthält keine Zwischenfrequenzen!
> Allerdings möchte ich behaupten, dass im angesprochenen Beispiel (mit
> 250Hz Abstand) durchaus auch eine Frequenz mit 249,9 Hz oder gar 375Hz
> im Spektrum auftauchen wird...

Lothar,
deine Aussagen sind normalerweise qualifiziert, aber in diesem Fall 
entgeht mir der Sinn.
Bei einer DFT wird ein zeitlich begrenztes Signal als Summe von 
Sinusschwingungen interpretiert. Die DFT liefert dazu die Koeffizienten, 
also Phase und Amplitude dieser Schwingungen.
Bei einem Signal, das 128 Punkte lang ist, braucht man genau 64 
Frequenzen + DC um das Signal exakt darzustellen und diese Frequenzen 
sind gleichmäßig gestaffelt. Um beim ursprünglichen Beispiel zu bleiben, 
250 Hz, 500 Hz ... usw.
Es gibt KEINE Zwischenfrequenzen, weil ein derart kurzer Ausschnitt 
nicht komplex genug ist, um aus mehr Frequenzen aufgebaut zu werden. 
Erst wenn man den Ausschnitt verlängert, macht es Sinn von mehr 
Frequenzen zu reden.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Klaus Falser schrieb:
> Lothar,
> deine Aussagen sind normalerweise qualifiziert,
> aber in diesem Fall entgeht mir der Sinn.
Ist ja auch schon gute 15 Jahre her, seit ich die letzte FFT auf einem 
68332 gehackt habe, mag sein, dass mir die Terminologie nicht mehr so 
geläufig ist... ;-)

> Bei einem Signal, das 128 Punkte lang ist, braucht man genau 64
> Frequenzen + DC um das Signal exakt darzustellen
Genau das ist der Knackpunkt, denn in der "realen" Welt gibt es auch 
noch jede Menge "Zwischenschritte" bzw. "Zwischenfrequenzen", und diese 
werden nicht abgebildet...

> Es gibt KEINE Zwischenfrequenzen,
Das ist soweit klar, diese äquidistante Einteilung liegt in der Natur 
der FFT. Aber es ist einfach so, dass sich ein Signal, dessen Frequenz 
z.B. mit 375Hz genau zwischen zwei "Stützpunkten" (250 und 500Hz) ist, 
(mindestens) auf diese beiden abgebildet wird.

BTW:
> Bei einem Signal, das 128 Punkte lang ist, braucht man genau 64
> Frequenzen + DC um das Signal exakt darzustellen
Was würde eigentlich passieren, wenn die Abtastpunkte nicht die selben 
Zeitabstände hätten (Jitter, ungewollt oder gewollt)?

von Klaus F. (kfalser)


Lesenswert?

Lothar Miller schrieb:
>> Es gibt KEINE Zwischenfrequenzen,
> Das ist soweit klar, diese äquidistante Einteilung liegt in der Natur
> der FFT. Aber es ist einfach so, dass sich ein Signal, dessen Frequenz
> z.B. mit 375Hz genau zwischen zwei "Stützpunkten" (250 und 500Hz) ist,
> (mindestens) auf diese beiden abgebildet wird.

Die DFT geht davon aus, dass das Signal periodisch fortgesetzt wird. Ein 
Signal mit 375 Hz, 32000 KHz Abtastrate, aus dem man 128 Punkte 
ausschneidet, lässt sich eben nicht kontinuierlich fortsetzen. An den 
Stoßstellen bilden sich Diskontinuitäten, die dann höhere Frequenzen 
erzeugen. Aber Du hast recht, man wird an 250 und 500 einen Peak 
bekommen.
Diese Diskontinuitäten an des Stosstellen sind übrigens der Grund, warum 
man nicht das Signal direkt nimmt, sondern nochmals mit einem Fenster 
(z.B. Hamming) gewichtet.

Wer probieren will, kann sich ja einmal mit einem freien 
Mathematikprogramm spielen.

> BTW:
>> Bei einem Signal, das 128 Punkte lang ist, braucht man genau 64
>> Frequenzen + DC um das Signal exakt darzustellen
> Was würde eigentlich passieren, wenn die Abtastpunkte nicht die selben
> Zeitabstände hätten (Jitter, ungewollt oder gewollt)?

Sollte meines Wissens Rauschen erzeugen, also einen kleinen zufälligen 
Beitrag zu den ein einzelnen Frequenzen.

von Ranga Yogibaer (Gast)


Lesenswert?

> Bei einem Signal, das 128 Punkte lang ist, braucht man
> genau 64 Frequenzen + DC um das Signal exakt darzustelle

Das wären 65! wo stecken die? Soweit mir bekannt, ist die FFT gespiegelt 
und voll symmetrisch. Die ersten 64 Werte wäre also:

Frequenz 0
Frequenz 1/64
Frequenz 2/64
...
Frequenz 63/64
ab dann rückwärts

Frequenz 64/64 gibt es dann nicht?

> jede Menge "Zwischenschritte" bzw. "Zwischenfrequenzen", und diese
> werden nicht abgebildet...
Bei meinem Spektrumanalyzer ist das aber kontinuierlich, wenn ich einen 
Sinus drauf gebe und durch-"sweepe". Liegt es an der Auflösung und der 
Breitbandigkeit?

Ich meine eher, dass sich das so verhält, wie bei einem Equalizer: Eine 
Zwischenfrequenz wird zu 0,5 oder 0,7 auf die Nachbarn verteilt.

> Hamming
Also erst durch das Fenster wird ein zustand erzeugt, dass die 
Zwischenfrequenzen vernüftig sichtbar werden?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Ranga Yogibaer schrieb:
> Also erst durch das Fenster wird ein zustand erzeugt, dass die
> Zwischenfrequenzen vernüftig sichtbar werden?
Nein, dadurch wird ein Zustand erzeugt, dass keine (unverhofften) 
"Pseudofrequenzen" auftreten...

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Ranga Yogibaer schrieb:
>> Bei einem

reellen

>> Signal, das 128 Punkte lang ist, braucht man
>> genau 64 Frequenzen + DC um das Signal exakt darzustelle
>
> Das wären 65! wo stecken die?

Da DC und fs/2 reell sind (Symmetrie des Spektrums) werden die beiden 
Werte meistens als Real- und Imaginärteil im 1. Frequenzbin 
zusammengefasst. Sollte in der Dokumentation stehen.

von Michael L. (Gast)


Lesenswert?

Hallo Lothar,

>> Bei einem Signal, das 128 Punkte lang ist, braucht man genau 64
>> Frequenzen + DC um das Signal exakt darzustellen
> Genau das ist der Knackpunkt, denn in der "realen" Welt gibt es auch
> noch jede Menge "Zwischenschritte" bzw. "Zwischenfrequenzen", und diese
> werden nicht abgebildet...
Der Knackpunkt liegt m. E. darin, daß Ihr Euch nicht klar darüber seid, 
welche Signale vorliegen.

Die (kontinuierliche) Fouriertransformation transformiert Analogsignale 
endlicher Signalenergie in ein kontinuierliches Fourierspektrum:
Wenn wir ein endlich langes Zeitfenster aus einem Analogsignal 
betrachten, so liegt ein Signal vor, das in dem betrachteten Zeitverlauf 
einen charakteristischen Verlauf hat und davor und danach exakt gleich 
Null ist. Die kontinuierliche Fouriertransformation enthält also an den 
Rändern den evtl. vorhandenen Sprung zu s(t)=0 und reproduziert den 
langen Bereich mit den Nullen ebenfalls.

Die DFT/FFT transformiert endlich lange (nur zu diskreten Zeitpunkten 
definierte) Signale in ein diskretes Spektrum gleicher Länge. Im 
Gegensatz zur kontinuierlichen FT geht die DFT/FFT aber gerade nicht 
davon aus, daß das Signal am Signalrand verschwindet, sondern vielmehr, 
daß es sich dort periodisch wiederholt (d. h. es liegt ein anderer 
"Sprung" am Rand und anderer Verlauf außerhalb des betrachteten 
Zeitfensters vor).

Die DFT/FFT und die kontinuierliche Fouriertransformation bringen 
dementsprechend grundsätzlich andere "Sprünge" und an den Rändern auch 
andere Signalverläufe(!) hervor. Nur, wenn die Signalränder nicht 
interessieren (weil Du beispielsweise sehr gut abtastest und lange 
Signale betrachtest), kannst Du diesen Einfluß vernachlässigen.

>> Es gibt KEINE Zwischenfrequenzen,
> Das ist soweit klar, diese äquidistante Einteilung liegt in der Natur
> der FFT. Aber es ist einfach so, dass sich ein Signal, dessen Frequenz
> z.B. mit 375Hz genau zwischen zwei "Stützpunkten" (250 und 500Hz) ist,
> (mindestens) auf diese beiden abgebildet wird.
Man möchte hier sagen "ja und nein". Ja, weil das Signal auf die 
Nachbarfrequenzen abgebildet wird, und nein, weil in Wirklichkeit kein 
Signal von 375 Hz vorliegt.

Ein Signal von (exakt) 375 Hz liegt nur dann vor, wenn das Signal 
periodisch und somit unendlich lang ist.

Bei Digitalsignalen lautet die Frage nicht: Ist das Signal unendlich 
lang und ist überall sinusförmig, sondern "Ist das Signal überall 
sinusförmig, und paßt es exakt in das Zeifenster hinein?".

Paßt die Periodendauer exakt ist das Zeitfenster, das Du betrachtest, so 
ergänzt die DFT das Signal periodisch, und Du erhältst wie gewünscht 
durch die Periodisierung einen unendlich langen Sinus. Das Ergebnis ist 
ein Peak bei exakt 375 Hz (dieser Wert ist - ohne daß es sich um Zufall 
handelt - im Spektrum dann auch immer vorhanden).

Wenn das Spektrum keine Koordinate f=375 Hz hat, so wird das Signal 
durch das Zeitfenster irgendwo mittendrin "abgeschnitten". Dieses 
"Abschneiden" (d. h. der damit verbundene Signalsprung an den Rändern, 
oder manchmal auch nur ein Sprung in der Ableitung des Signals) bewirkt, 
daß das Signal tatsächlich auch andere Frequenzen enthält. Meist ergibt 
sich durch das Abschneiden sogar ein Gleichanteil.
Da die eigentliche Frequenz sich in die Nachbarfrequenzen "leckt", 
spricht man vom sogenannten Leakage-Effekt.

> BTW:
>> Bei einem Signal, das 128 Punkte lang ist, braucht man genau 64
>> Frequenzen + DC um das Signal exakt darzustellen
> Was würde eigentlich passieren, wenn die Abtastpunkte nicht die selben
> Zeitabstände hätten (Jitter, ungewollt oder gewollt)?
Die Abtastung kannst Du Dir als Multiplikation des Signals mit einem 
Dirac-Kamm vorstellen.

Das Spektrum des abgetasteten Signals ist dementsprechend das Spektrum 
des Analogsignals gefaltet mit dem Spektrum des Dirac-Kamms.

Wenn die Zeitabstände des Dirac-Kamms ungleichmäßig sind, so ist das 
Spektrum des Dirackamms komplexer als im Idealfall. M. E. gibst Du im 
Signalspektrum dann andere als die "tatsächlichen" Frequenzen an.

Meßtechnisch ist ein Jitter ja nichts so Ungewöhnliches.


Gruß,
  Michael

von Andi H. (janus)


Lesenswert?

Klaus Falser schrieb:
> Es ist jedenfalls so, dass man, je weniger Abtastpunkte man verwendet,
> umso weniger Frequenzpunkte zurückbekommt. Will man das Signalspektrum
> höher auflösen (mehr Frequenzpunkte) muss man die FFT länger machen.

Mehr Frequenzpunkte würde man aber auch durch zero-padding 
(zero-stuffing) erhalten, oder?

@Michael, was den Leakage-Effekt betrifft, die Signalenergie müsste auf 
die benachbarten frequency bins aufgeteilt werden -> könnte dann durch 
passendes Windowing verhindert werden? Ist das auch das Problem was man 
als Zaunlatteneffekt bezeichnet?
Bzgl. dem genauen 375 Hz Signal und dem Zeitfenster meinst du das 
Problem, das sich ergibt wenn das zeitlich begrenzte Signal 
transformiert wird und dessen Periode bei der Transformation nicht 
ganzzahlig im Zeitfenster liegt, hoffe ich habe das richtig verstanden.

von Michael L. (Gast)


Lesenswert?

Hallo Andi,

> Klaus Falser schrieb:
>> Es ist jedenfalls so, dass man, je weniger Abtastpunkte man verwendet,
>> umso weniger Frequenzpunkte zurückbekommt. Will man das Signalspektrum
>> höher auflösen (mehr Frequenzpunkte) muss man die FFT länger machen.
>
> Mehr Frequenzpunkte würde man aber auch durch zero-padding
> (zero-stuffing) erhalten, oder?
Ja. Es ist bloß so, daß die Nullen durchaus das Spektrum verändern.

> @Michael, was den Leakage-Effekt betrifft, die Signalenergie müsste auf
> die benachbarten frequency bins aufgeteilt werden -> könnte dann durch
> passendes Windowing verhindert werden?
> Ist das auch das Problem was man als Zaunlatteneffekt bezeichnet?
Ich kenne das noch al Leckeffekt; der Begriff Zaunlatteneffekt ist mir 
nicht geläufig.

Fenstern glättet das Spektrum, es löst aber nicht das grundlegende 
Problem, daß Du mit dem Spektrum im Ergebnis etwas haben willst, was Du 
als Zeitsignal nicht reinsteckst:

- Denn ein bandbeschränktes Spektrum (egal, ob analog oder digital) sagt 
immer etwas über den gesamten Zeitbereich [-oo,+oo] aus. Wenn Dein 
Signal kürzer als unendlich lang ist, mußt Du Dich entscheiden, welche 
Signalform Dein Signal vor dem Starten und nach dem Beenden der Messung 
haben soll. Da Du das nicht wissen kannst, hast Du immer eine gewisse 
Unbestimmtheit im Spektrum.

Die Tatsache, daß bandbeschränkte Signale zeitlich unendlich lang sind, 
geht letztlich darauf zurück, daß die Aufbaufunktionen des Signals (die 
Sinus/Cosinusfunktionen) undendlich lang sind. Das Problem ist also 
direkt in der Begrifflichkeit und der zugrundeliegenden Transformation 
enthalten und kann im Rahmen des Begriffes "eine Frequenz aufweisen" 
nicht gelöst werden.

Die Verwendung von Fensterfunktionen (Hannfenster, Gaußfenster u. ä.) 
ist ein pragmatischer Umgang in der Praxis. Beachte jedoch, daß Du mit 
den Fenstern Dein Meßsignal sogar in dem Zeitbereich, für den Dir 
Meßwerte vorliegen, verfälschst.

Eine ähnliche Methode wie die Fensterung besteht darin, das Signal an 
den Signalrändern zu spiegeln, anschließend periodisch fortzusetzen und 
dann zu transformieren. Damit verhindert man die Signalsprünge an den 
Rändern, ohne sonst allzu viel zu verändern. Doch auch hier gilt: Man 
muß sich (willkürlich) festlegen, was vor und nach dem eigentlichen 
Meßsignal gewesen sein soll und beeinflußt damit das Spektrum.

> Bzgl. dem genauen 375 Hz Signal und dem Zeitfenster meinst du das
> Problem, das sich ergibt wenn das zeitlich begrenzte Signal
> transformiert wird und dessen Periode bei der Transformation nicht
> ganzzahlig im Zeitfenster liegt, hoffe ich habe das richtig verstanden.
Ja.

Gruß,
  Michael

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.