mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Frage zu FFT Programm


Autor: study (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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
Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: study (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: study (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja und bei einem Bild benötigt man eine 2D-FFT.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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)

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: study (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: R. M. (exp)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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. 
*
 ************************************************************************ 
******/

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.