Hallo zusammen,
ich habe eine Frage bezüglich der diskreten Fourier Transformation.
Es wird ein zeitlich diskretes Intervall hergenommen dessen
Frequenzintervall als das max. 0,5 fache der Samplingfrequenz betrachtet
wird.
Dieses Intervall wird dann auf (diskrete ?) Vielfache der
Samplingfrequenz untersucht. Letztlich weiß ich ja nicht, ob sich nicht
auch Fraktale dieser Frequenzen in dem Signal tummeln, die mir dann das
Spektrum verwischen.
Bedeutet dies
a.) ich habe etwas noch nicht richtig erfasst? Wenn ja, was?
b.) ich kann die DFT nur auf Signale anwenden von denen ich WEIß, dass
sie von einer bestimmten Grundschwingung herrühren (weil ich sie z.B.
selbst erzeugt habe)
c.) bei zufälligen Signalen muss ich einen Sweep in der Samplingfrequenz
machen.
Grützi!
@Chefkoch (Gast)
>ich habe eine Frage bezüglich der diskreten Fourier Transformation.>Es wird ein zeitlich diskretes Intervall hergenommen dessen>Frequenzintervall als das max. 0,5 fache der Samplingfrequenz betrachtet>wird.
Sehr akademischer Satz.
>Dieses Intervall wird dann auf (diskrete ?) Vielfache der>Samplingfrequenz untersucht.
Nö. Wenn gleich es bei der Theorie der DFT das Problem des Aliasings
gibt, wird NICHT nach Vielfachen der Abtastfrequenz gesucht. Die DFT
berechnt die Frequenzanteile im Signal. Wenn gleich man mathematisch von
0- Unendlich diese Anteile berechnen kann, ist nur der Bereich zwischen
0 und fs/2 sinnvoll. Die Frequenzauflösung ergibt sich direkt aus dem
Messintervall im Zeitbereich (delta f = 1/Tges)
> Letztlich weiß ich ja nicht, ob sich nicht>auch Fraktale dieser Frequenzen in dem Signal tummeln, die mir dann das>Spektrum verwischen.
Das Wort "Fraktale" hat mit der DFT rein gar nichts zu tun. Das ist nur
Bullshit-Bingo.
>a.) ich habe etwas noch nicht richtig erfasst? Wenn ja, was?
ja. Einges.
>b.) ich kann die DFT nur auf Signale anwenden von denen ich WEIß, dass>sie von einer bestimmten Grundschwingung herrühren (weil ich sie z.B.>selbst erzeugt habe)
Nein. Die DFT kann man auf jeden beliebigen Datensatz anwenden. Die
Frage ist vielmehr, wie ich diesen Datensatz erzeugen kann. Wenn es, wie
in den meisten Fällen, mittels AD-Wandler geschieht, muss dort ein
passender Anti-Aliasing Filter vorhanden sein, eben damit es kein
Aliasing gibt.
>c.) bei zufälligen Signalen muss ich einen Sweep in der Samplingfrequenz>machen.
Nö. So gesehen ist jedes Signal "zufällig", sonst wäre es kein Signal.
Die 50 Hz Schwingung des Stromnetzes ist KEIN Signal im Sinne der
Informationsübertragung, denn es ist zu 100% vorhersagbar.
Hallo Chefkoch,
Fouriertransformation beruht auf Sinus/Kosinus und beide Funktionen sind
unendlich ausgedehnt (Zeit). (Selbe Idee, wie einen Verlauf durch
ax+bx^2+c^3 anzunähern) Um dieses Problem zu lösen führe ich ein
Zeitfenster ein, was in alle Ewigkeit wiederholt wird. Damit kann ich
mit endlich vielen Werten rechnen und erhalte die DFT.
zu a) Passen die "Enden" des Zeitfensters nicht zusammen erhalte ich
Fraktale, weil Verlauf für die Berechnung nicht mit dem realen Verlauf
übereinstimmt.
zu b) ist von Vorteil, ansonsten wird für die FFT wird zusätzlich eine
Fensterfunktion verwendet. Der Grenzwert für den Rand ist 0. Dadurch
wird das Spektrum verschliffen, ist aber besser als ein harter Bruch
(Rechteckfenster). Genaue Details kenne ich nicht.
zu c) zufällig -> hat keine Periode, da nutzt keine günstige Auswahl des
Fensters. Nur genügend Messdauer und ein gutes Fenster für ein gute
Näherung für den Bereich der dich interessiert
FelixW schrieb:> Passen die "Enden" des Zeitfensters nicht zusammen erhalte ich> Fraktale
Du meinst Artefakte. AKA "in der FFT tauchen Frequenzanteile auf, die im
Originalsignal gar nicht drin sind". Verursacht durch Verletzung der
Vorbedingung der FFT, umgehbar durch die von dir angesprochenen
Fensterfunktionen, die letztlich dazu dienen die Daten "periodisch zu
machen"
> Passen die "Enden" des Zeitfensters nicht zusammen erhalte ich> Fraktale
Das Wort das du suchst ist Leckeffeckt ;-)
Damit du diesen Effekt nicht siehst (er ist immer da, da er durch die
Begrenzung des Betrachtungszeitraums entsteht) muss das gefensterte
Signal (im einfachsten Fall ein Rechteck, also ein Zeitausschnitt), wenn
man es periodisch Fortsetzt, dem eigentlichen Signal entsprechen. Also
volle Perioden. Das ist in der Praxis natürlich seltenst der Fall. Daher
versucht man das Signal zu periodisieren. Das geschieht mit
Fensterfunktionen (z.B. Hann, Hamming, Flat-Top, etc.), diese Gewichten
den "Anfang" und das "Ende" des betrachteten Zeitraums schwächer.
Dadurch minimiert sich der Leckeffekt, aber die Spektraleauflösung wird
schlechter (die einzelnen Frequenzspitzen werden breiter). Daher gibt es
auch so viele verschiedene Fensterfunktionen, jede hat ihre Vor- und
Nachteile. Die passende zu Finden ist nicht immer ganz einfach.
Ich denke es klärt sich - vorher noch eine weitere Frage:
Sehe ich es richtig, dass sich eine maximale Ausnutzung der Samplingrate
erst ergibt, wenn Daten aus einem "1-Sekunden-Zeitraum" analysiert
werden?
Meine Frage ergibt sich aus dem Gedankenexperiment, bei dem ich mir eine
Samplingrate = 1kHz denke, aber nur einen Signalspeicher von 10 Samples.
Auf diese 10 Samples wende ich eines der Fenster an und mache so
gedanklich ein Signal mit einer Periode von 10ms (soweit richtig? {a}).
Was ist jetzt ausschlaggebend für die anwendbaren Frequenzen der
Sin/Cosinus Funktionen {b}? Die Samplingrate oder die 10 ms des als
periodisch angenommenen Signales?
@ Chefkoch (Gast)
>Sehe ich es richtig, dass sich eine maximale Ausnutzung der Samplingrate>erst ergibt, wenn Daten aus einem "1-Sekunden-Zeitraum" analysiert>werden?
Nein. Man kann auch an einem 10s Zeitfenster interessiert sein, je nach
Anwendung.
>Meine Frage ergibt sich aus dem Gedankenexperiment, bei dem ich mir eine>Samplingrate = 1kHz denke, aber nur einen Signalspeicher von 10 Samples.>Auf diese 10 Samples wende ich eines der Fenster an und mache so>gedanklich ein Signal mit einer Periode von 10ms (soweit richtig? {a}).
Ja.
>Was ist jetzt ausschlaggebend für die anwendbaren Frequenzen der>Sin/Cosinus Funktionen {b}? Die Samplingrate oder die 10 ms des als>periodisch angenommenen Signales?
Beides. Die 1kHz Samplingrate begrenzt die sinnvolle Analyse auf 0,5 kHz
im Spektrum. Die 10ms ergeben eine Frequenzauflösung von 100 Hz. Sprich,
deine DFT spuckt nur 5 komplexe Ergebnisse aus. Bei 1s Messfenster hat
man schon eine Frequenzauflösung von 1 Hz und somit 500 Ergebnisse.
m´kay, bedeutet
a) die 5 Ergebnisse folgern aus 0,5kHz/100Hz ?
b) es wird auf 0Hz, 100Hz, 200Hz, 300Hz und 400Hz analysiert?
c) die ANZAHL der Ergebnisse ergeben sich direkt aus der Anzahl der
Sample/2 ?
@ Chefkoch (Gast)
>a) die 5 Ergebnisse folgern aus 0,5kHz/100Hz ?
Ja.
>b) es wird auf 0Hz, 100Hz, 200Hz, 300Hz und 400Hz analysiert?
500 Hz sind auch noch dabei sein.
>c) die ANZAHL der Ergebnisse ergeben sich direkt aus der Anzahl der>Sample/2 ?
Sozusagen.
>500 Hz sind auch noch dabei sein.
wenn die 1kHz Samplingrate mit 10 Datenpunkten zu 5 Werten führt und die
Frequenz 0Hz mit Sicherheit dabei ist, müsste es doch bei 400Hz
aufhören?
Oder lautet die Regel
- Auflösung = fs/N ;
- ANZAHL = ((fs/2)/Auflösung ) + 1
- bei obigem Gedamkenexperiment ANZAHL = 6 ?
>Sozusagen
bedeutet mathematisch nicht korrekt argumentiert, es läuft durch
mathematische Zusammenhänge darauf hinaus?
Hi,
1. Datenpunkt 0HZ = DC, rein reeler Wert
2. Datenpunkt 100Hz
3. Datenpunkt 200Hz
4. Datenpunkt 300Hz
5. Datenpunkt 400Hz
6. Datenpunkt 500Hz = Nyquist, rein reeler Wert
7. Datenpunkt conjuguiert complex zu 5. Datenpunkt
8. Datenpunkt conjuguiert complex zu 4. Datenpunkt
9. Datenpunkt conjuguiert complex zu 3. Datenpunkt
10.Datenpunkt conjuguiert complex zu 2. Datenpunkt
so is das
Cheers
Detlef
PS: Philosophie benötigt man bei der DFT nicht, die Mathematik reicht da
aus.
Chefkoch schrieb:> Sehe ich es richtig, dass sich eine maximale Ausnutzung der Samplingrate> erst ergibt, wenn Daten aus einem "1-Sekunden-Zeitraum" analysiert> werden?
Ich schätze, du siehst das ziemlich falsch.
Ganz grob gesagt, sieht das bei der diskreten FT etwa so aus:
Man hat ein bestimmtes Zeitfenster vor sich, in welchem es eine Anzahl
von Samples gibt, die den zeitlichen Verlauf der (eigentlich analogen)
Eingangsspannung darstellen.
Mit der Fourier-Transformation will man nun bestimmen, wie man diesen
Verlauf mittels überlagerter Sinus und Cosinus-Wellen darstellen kann.
Ausgangspunkt ist ein Sinus und ein Cosinus mit der Frequenz
1/Zeitfensterlänge. Logisch, gelle?
Alle weiteren "Co- und Sinüsse" sind Vielfache dieser Grundfrequenz.
Aber das Steigern der "Oberwellen" bis zur Unendlichkeit ist Unsinn,
denn die höchste darstellbare Frequenz ist die, deren Periode dem
1/2fachen der Samplefrequenz entspricht.
Also kriegt man als Ergebnis ein Feld von Amplitudenwerten für all diese
Co- und Sinuswellen heraus, das (mal abgesehen von der Frequenz NULL)
von der Grundfrequenz (also 1/Fensterlänge) bis zur halben
Samplefrequenz reicht. In Schritten der Grundfrequenz.
Wie grob oder fein das ausfällt, hängt nur davon ab, wieviele Samples
(also Stützstellen) man in dem betrachteten Zeitfenster hat. Also wie
lang das Fenster bei gegebener Samplefrequenz ist.
Wenn man nun aus den so ermittelten Amplitudenwerten der Sinus und
Cosinus Wellen wieder die ursprünglichen Samples errechnen will, dann
fällt dabei auf, daß in der nach Ablauf des Zeitfensters in der dazu
benötigten Konvolution noch restliche Werte drinstecken, die quasi eine
Art Rattenschwanz darstellen, der in das darauffolgende Zeitfenster
hineinreichen. Entweder merkt man sich diese und addiert sie bei der
nachfolgenden Wandlung oder es gibt eben ne Stoßstelle und damit ein
Klirren.
W.S.
Die DFT geht immer von sich wiederholenden Signalen aus. Sprich sie tut
immer so, als ob das Signal an den Enden sich wiederholen würde. Solch
ein Signal kann nur Vielfache der Wiederholungsfrequenz enthalten,
andere Frequenzen sind nicht möglich.
Du kannst Fensterfunktionen verwenden um das Problem zu dämpfen, aber
Prinzipiell wirst Du immer das Problem bei der DFT/FFT haben.
Bei der DFT ergeben sich nun die Frequenzen automatisch aus der
Samplingfrequenz und der Anzahl der gesampelten Werte. Du brauchst pro
Schwingung also nur noch 2 Informationen: Amplitude und Phase.
Angenommen, Du samplest N=10 Werte mit fs=1kHz.
Damit bekommst Du per DFT ((N/2) + 1) Wertepaare.
Aus diesen 10 Werten bekommst per DFT Du also 12 (!) Werte.
1
1.Amplitudebei0*1kHz/10=0Hz
2
2.Phasebei0*1kHz/10=0Hz
3
3.Amplitudebei1*1kHz/10=100Hz
4
4.Phasebei1*1kHz/10=100Hz
5
5.Amplitudebei2*1kHz/10=200Hz
6
6.Phasebei2*1kHz/10=200Hz
7
7.Amplitudebei3*1kHz/10=300Hz
8
8.Phasebei3*1kHz/10=300Hz
9
9.Amplitudebei4*1kHz/10=400Hz
10
10.Phasebei4*1kHz/10=400Hz
11
11.Amplitudebei5*1kHz/10=500Hz
12
12.Phasebei5*1kHz/10=500Hz
Die Information 2.) hat allerdings keinen Nutzen: was sagt Dir die Phase
einer Schwingung mit 0Hz? Gar nichts!
Du kannst also den Gleichanteil (DC-Offset, 0Hz) sowie 5 harmonische
Anteile darstellen.
Die Frequenzen dieser harmonischen Schwingungen sind ganzzahlige
Vielfache von fs/N.
Ups, zu schnell, sorry!
Die Information 12.) (Phase bei 500Hz) ist immer 0, trägt also auch
keinen Informationsgehalt. Warum ist das so? Weil die Frequenz dieser
Schwingung bei genau halber Samplingfrequenz liegt und dort keine
Phasenverschiebung mehr abgebildet werden kann.
>>>
Damit bekommst Du per DFT ((N/2) + 1) Wertepaare.
Aus diesen 10 Werten bekommst per DFT Du also 12 (!) Werte.
<<<
Nein, bekommst Du nicht.
Die DFT macht aus n komplexen Eingangswerten n komplexe Ausgangswerte.
Falls die Eingangswerte reel sind (Imaginärteil ist 0, Standard für
gesampelte Zeitreihen), sind die Ausgangswerte so sortiert, wie ich das
oben geschrieben habe: Die obere Hälfte der Ausgangswerte ist konjugiert
komplex zur unteren Hälfte.
So ist das mit der DFT. Die FFT ist eine Berechnungsart für die DFT, da
ändert sich an Obengesagtem nix.
Für rein reele Eingangssignale gibt es Verfahren, n reele samples mit
einer n/2 komplexen FFT zu rechnen. Die obere Hälfte der Ausgangswerte
ist, wie gesagt, konjugiert komplex zur unteren Hälfte, deswegen
schmeisst man die weg. Damit passt dann das Ergebnis der FFT (n/2
komplexe Werte) auf den Platz der Eingangswerte (n reele samples).
Das ist ein Spazialverfahren für reele Eingangswerte, DFT/FFT arbeiten
auf komplexen Werten. Ohne letzteres kann man ersteres nicht kapieren.
Der erklärts' :
http://www.amazon.com/Fast-Fourier-Transform-Its-Applications/dp/0133075052
Cheers
Detlef
Man kann es auch anders sagen: Die (komplexe) FFT ändert nichts am
Informationsgehalt. Habe ich vorher n Samples, müssen es nachher auch n
sein. Weil das komplexe Samples sind, sind es aber eigentlich n*2
"Zahlenwerte", vorher wie nachher.
Wenn man nur reele Werte hat und die in die FFT steckt, sieht das
oberflächlich betrachtet etwas komisch aus, weil da n (reele) Werte zu
2*n Werten (real+imaginär) verdoppelt werden. Allerdings steckt die
Info, dass die imaginären Eingangswerte alle 0 sind, in der Konjugation
der Ausgangswerte drin. Die Info wird also nur redundant auf die 2*n
verteilt.
IMO wird das ganze deutlich verständlicher, wenn man mal eine kleine
komplexe FFT (16er oder sowas) nimmt und mal etwas mit den
Eingangswerten rumspielt (sin und/oder cos, reel und oder imaginär) und
dann schaut, wie und wo die Grundfrequenzen im Ergebnis auftauchen...