Hallo zusammen, nach längeren Überlegungen bin ich mir nicht ganz sicher ob meine Gedankengänge richtig sind. Hier mein Problem: Ich habe ein Signal im Zeitbereich mit einer Amplitude X. Nun transformiere ich dieses (das System sei uninteressant) Signal in den Frequenzbereich mit einer FFT. Nun habe ich beispielsweise eine 2048er FFT. Die Einzelnen Punkte (x-Achse) spiegeln die entsprechende Frequenz wieder (abhängig von der Abtastrate). Nur wie interpretiere ich die y-Achse, also die Amplitudenwerte? Hierzu finde ich nichts. Wenn ich 10V im Zeitbereich habe, was habe ich dann im Frequenzbereich? Oder anders herum, wenn ich nach der FFT an Position X den Wert 1234 habe, was entspricht dies im Zeitbereich? (Ausprobieren will ich es nicht, ich würde gerne den Hintergrund verstehen). Vorab vielen Dank :)
:
Verschoben durch Admin
Lies die Hilfe zur FFT-Funktion in deinen Programm. Je nach Programm und FFT-Funktion kann eine Normierung mit den Faktoren: n/2 n wurzel(n) 1 1/2 vorliegen. Wobei n die Länge deines Vektors im Zeitbereich ist.
Wenn man beispielsweise Matlab verwendet... fs = 50000; tt = 0:1/fs:1; f1 = 1000; f2 = 2000; S1 = sin(2*pi*f1*tt) + sin(2*pi*f2*tt); FFT1 = fft(S1, 1024); FFT1 = sqrt(real(FFT1).^2 + imag(FFT1).^2); und ich dies nun plotte, so habe ich zwei verschiedene Amplitudenwerte im Spektrum, obwohl beide Signale mit gleicher Amplitude im Zeitbereich (Amplitude = 1) vorliegen. Somit ist mein Problem nicht alleine bei der Normierung auf einen Wert welcher von der verwendeten Funktion abhängt, sondern wirklich das Verständnis der Thematik an dieser Stelle... grübel
Nochmal: lies die Hilfe! Hilfe von octave: ------------------- Function: fft (a, n) Compute the FFT of a using subroutines from FFTPACK. If a is a matrix, fft computes the FFT for each column of a. If called with two arguments, n is expected to be an integer specifying the number of elements of a to use. If a is a matrix, n specifies the number of rows of a to use. If n is larger than the size of a, a is resized and padded with zeros. --------------------- Dein Vektor tt ist 50000 Punkte lang, die FFT machst du aber nur über die ersten 1024 Punkte.
Hallo, vielen Dank für Deine Antwort, nur hilft mir dies noch immer nicht weiter. Die Hilfe habe ich schon mehrmals durchgelesen. Wenn mir dies weitergeholfen hätte, so müsste ich nicht weiter fragen, sondern hätte mich bedankt :o) Wenn ich annehme das Signal ist nun nicht 50000 Werte lang, sondern unendlich lang, so muss ich ja dennoch die tatsächlichen Amplitudenwerte aus der FFT für den Zeitbereich bestimmen können. Meine FFT-Funktion normiert auf n (n = FFT-Länge). Wenn ich nun die Amplitudengrößen im Zeitbereich kenne so könnte ich von der Normierung zurückrechnen. Ist mir diese Amplitude im Zeitbereich aber nicht bekannt, so kann ich die Normierung auf eine physikalische Größe nicht zurückrechnen, oder sehe ich dies falsch? Wie beschriftet man in diesem Fall dann die Achsen? x-Achse entspricht der Frequenz, y-Achse "einer" Amplitude welche normiert ist. Nochmals danke und viele Grüße
Bei gleicher Amplitude ist die Energie eines Signals (sprich:die Amplitude im Spektrum) abhängig davon,wielange das Signal anliegt.Werden 1024 Punkte verwendet,entspricht das einem kürzerem Zeitraum als bei 2048 Punkten (wenn die Abtastfrequenz die selbe ist). Erklären kannst du dir die Amplitude einfach mit der Diskreten Fourier Transformation (DFT),aus der Summenfunktion ist ersichtlich jede Frequenz ist eine Summe aller Punkte multipliziert mit der Frequenz.
Die Normierung mit n kannst du einfach rückgängig machen. sieh dir mal den Unterschied zwischen: FFT1 = abs(fft(S1, 1024))./1024; und FFT2 = abs(fft(S1))./50000; an. Im ersten Fall werden keine ganzen Sinuswellen von f1 und f2 verwendet. Deshalb haben die beiden Frequenzen im Spektrum unterschiedliche Amplituden. Die y-Achse im Spektrum ist die (normierte) Amplitude. Die x-Achse enthält die (normierten) Frequenzen. Der Abstand der Spektrallinien beträgt 1/Tmax. In deinem Fall Tmax=1024/50000 für FFT1 und Tmax=1 für FFT2.
Hallo, nun habe ich den einen Denkfehler bei mir gefunden (Frequenzanteil über eine kurze Zeit [1024] Punkte und über einen längeren Zeitraum). Um noch einmal auf die Achsenbeschriftung zurück zu kommen. An dieser Stelle bin ich etwas verwirrt mit Tmax wobei ich die Aussage denke ich verstanden habe. Die x-Achse hat bei FFT1 1024 Punkte, wobei ein Punkt die Frequenz (in diesem Fall) 50000/1024 hat (~48,8). Stehen die 50000 für eine Abtastrate von 50kHz, so habe ich eine Auflösung auf der x-Achse von 48,8Hz. Ich kann einfach die x-Achse mit 48,8Hz multiplizieren und habe somit die Frequenzanteile. Als Beschriftung kann ich Frequenz [Hz] schreiben. (Das die FFT ein zweiseitiges Spektrum liefert sei an dieser Stelle "übersehen". Mir ist bewusst, dass ich nur bis 25kHz gehe, und der darauf folgende Teil die negativen Frequenzen darstellt). Mein Problem ist nun, dass ich an die y-Achse eine Beschriftung machen möchte wie Amplitude [V]. Da die y-Achse "normiert" ist, kann ich nicht einfach [V] "hinterschreiben". Ein Signal mit der Amplitude 1V wird ja nicht im Spektrum mit 1 wiedergegeben. Vor allem wenn ich mit einbeziehe, dass ich ein kontinuierliches Signal habe und auch gerne eine 256er FFT machen würde. So wird die Amplitude ja nicht "wahrheitsgetreu" im Frequenzspektrum wiedergegeben, hierfür müsste man ja eine längere FFT machen (wie in Bsp. FFT2, hier liegt ja eine 50.000er-FFT vor). Scheinbar muss ich mir noch einige Gedanken an dieser Stelle machen. Dennoch vielen Dank an Euch beide! Ihr habt mir schon ein gutes Stück weitergeholfen!!!
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.