Hallo ich habe eine Frage zu fft Programm (siehe Anhang). Als Beispiel werden hier Daten von einer Textdatei eingelesen und die fft berechnet. Warum liegen die Werte (Zeitbereich) hier zweidimensional vor? Das verstehe ich nicht. Für jede genauere Erläuterung bin ich dankbar.
:
Verschoben durch Admin
Ich versteh jetzt deine Frage nicht. Eine FFT ist ja eine Operation die Samples, die in der Form [Realteil;Imaginärteil] vorliegen in andere Werte die ebenfalls in der Form [Realteil;Imaginärteil] dargestellt werden, umrechnet. Das ist aber dem Prinzip nach schon eine 2D Operation. [Realteil; Imaginärteil] sind nun mal 2 Bestimmungsstücke durch die ein Sample charakterisiert ist und daher ist das Ganze grundsätzlich eine 2D Operation.
Ja aber wenn ich nun ein Sinussignal habe, dann habe ich ja keine Imaginärtanteile. Es handelt sich dann um eine 1D-FFT. Bei diesem Beispiel (FFT Programm) handelt es sich doch ebenfalls um eine 1D-FFT oder lieg ich da jetzt komplett falsch.
study schrieb: > Ja aber wenn ich nun ein Sinussignal habe, dann habe ich ja keine > Imaginärtanteile. Es handelt sich dann um eine 1D-FFT. Nein. die erste Dimension ist die Zeit, die 2.te Dimension ist die Amplitude der Schwingung. 2 Koordinaten - 2 Dimensionen
study schrieb: > Ja und bei einem Bild benötigt man eine 2D-FFT. :-) Währe naheligend, ist aber nicht so. Bei einem (Schwarz Weiß) Bild hast du 3 Dimensionen 1. Dimension: Pixel in X Richtung 2. Dimension: Pixel in Y Richtung 3. Dimension: Amplitude (Helligkeitswert)
study schrieb: > Bei diesem > Beispiel (FFT Programm) handelt es sich doch ebenfalls um eine 1D-FFT study schrieb: > Ja und bei einem Bild benötigt man eine 2D-FFT. Stimmt beides schon. Der Begriff der Dimensionalität wird anders verwendet als es Karl-Heinz Buchegger erklärt hat. Die "1D-FFT" der Länge N verarbeitet einen Vektor aus N (im Allgemeinen komplexen) Zahlen. Bei der "2D-FFT" wäre es eine NxN große Matrix aus komplexen Zahlen. Bei der 3D-FFT wäre es ein NxNxN großer Tensor aus komplexen Zahlen, usw. Ob reell oder komplex ist unabhängig von der Dimensionalität. Wenn du nur reelle Werte verarbeiten willst setzt du den Imaginärteil einfach jeweils auf 0. Um Rechenzeit zu sparen kannst du auch eine FFT-Variante verwenden die für rein reelle Werte optimiert ist.
Vielen Dank für eure Hilfe. Also handelt es sich in dem obigen Beispiel um eine 1D-FFT. Eingangsdaten: 3.6 2.6 2.9 6.3 5.6 4.0 4.8 9.1 3.3 0.4 5.9 4.8 5.0 2.6 4.3 4.1 Ist die erste Spalte der Realteil oder Imaginäranteil? Hat von euch jemand schonmal von einem Bild eine 2D-FFT durchgeführt?
study schrieb: > Ist die erste Spalte der Realteil oder Imaginäranteil? steht doch im Kommentar: /*---------------------------------------------- fft_test.c - demonstration program for fft.c ----------------------------------------------*/ /*********************************************************************** ******* * This program demonstrates how to use the file fft.c to calculate an * * of given time-domain samples, as well as to calculate an inverse FFT * * (IFFT) of given frequency-domain samples. First, N complex-valued time- * * domain samples x, in rectangular form (Re x, Im x), are read from a * * specified file; the 2N values are assumed to be separated by whitespace. * * Then, an N-point FFT of these samples is found by calling the function * * fft, thereby yielding N complex-valued frequency-domain samples X in * * rectangular form (Re X, Im X). Next, an N-point IFFT of these samples is * * is found by calling the function ifft, thereby recovering the original * * samples x. Finally, the calculated samples X are saved to a specified * * file, if desired. * ************************************************************************ ******/
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.