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!
:
Verschoben durch Admin
@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"
:
Bearbeitet durch User
> 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.
:
Bearbeitet durch User
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.
>Sinüsse
Wie ein Mathelehrer mal sagte: "Der Sinus ist eine höfliche Beleidigung
- Sie Nuss"
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.
Ein kleines Detail, das gerne verwirrt: Um eine harmonische Schwingung darzustellen brauchst Du jeweils 3 Informationen:
1 | A * sin(w*t + phi) |
2 | mit A = Amplitude; w = 2*pi*f = omega = Kreisfrequenz; phi = Phasenwinkel |
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. Amplitude bei 0 * 1kHz / 10 = 0Hz |
2 | 2. Phase bei 0 * 1kHz / 10 = 0Hz |
3 | 3. Amplitude bei 1 * 1kHz / 10 = 100Hz |
4 | 4. Phase bei 1 * 1kHz / 10 = 100Hz |
5 | 5. Amplitude bei 2 * 1kHz / 10 = 200Hz |
6 | 6. Phase bei 2 * 1kHz / 10 = 200Hz |
7 | 7. Amplitude bei 3 * 1kHz / 10 = 300Hz |
8 | 8. Phase bei 3 * 1kHz / 10 = 300Hz |
9 | 9. Amplitude bei 4 * 1kHz / 10 = 400Hz |
10 | 10. Phase bei 4 * 1kHz / 10 = 400Hz |
11 | 11. Amplitude bei 5 * 1kHz / 10 = 500Hz |
12 | 12. Phase bei 5 * 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...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.