www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Englisch
  Status Grammatik
  Status Lektüre
  Status Korrekturlesen
  Status Übersetzung
  Status Sonstiges (Englisch)

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Algorithmen und Datenstrukturen" - FFT
FFT < Algor.+Datenstr. < Theoretische Inform. < Hochschule < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Algorithmen und Datenstrukturen"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

FFT: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 09:16 Do 06.01.2011
Autor: Curly

Hallo zusammen,

ich mache mit einem Array aus N abgetasteten Datenwerten eine FFT (N Durchläufe, bei denen ich jeweils alle Datenwerte aufsummiere, gewichtet mit der jeweiligen e-Funktion). Anschließend habe ich ein Array mit komplexen Datenwerten. Ich frage mich un, wie ich auf die zu den Frequenzen komme, die zu den einzelnen Elementen gehören?

Grüße und Danke.



Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.

        
Bezug
FFT: Ein Tipp
Status: (Antwort) fertig Status 
Datum: 18:28 Do 06.01.2011
Autor: Infinit

Hallo Curly,
Die FFT arbeitet mit Datensätzen. Welchen physikalischen Ursprung diese haben, kann man den Zahlen nicht mehr ansehen. Falls es sich um die Abtastung eines Zeitsignals handelt, so gelten die folgenden Zusammenhänge, wobei die Anzahl der Abtastpunkte im Zeit- und im Frequenzbereich gleich sind. Bezeichne ich mit [mm] T_{ges} [/mm] die Gesamtzeitdauer, mit [mm] F_{ges} [/mm] den Frequenzbereich, mit [mm] \Delta t [/mm] den Abtastabstand im Zeitbereich und mit [mm] \Delta f [/mm] den Abtastabstand im Frequenzbereich, so gilt
[mm] T_{ges} = N \Delta t [/mm]
[mm] F_{ges} = N \Delta f [/mm]
und
[mm] F_{ges} = \bruch{1}{\Delta t} [/mm] und
[mm] T_{ges} = \bruch{1}{\Delta f} [/mm]
Wenn Du also die Anzahl der Abtastpunkte kennst und einen Abtastabstand, so kannst Du die anderen Größen daraus bestimmen.
Viele Grüße,
Infinit


Bezug
                
Bezug
FFT: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 21:13 Do 06.01.2011
Autor: Curly

Okay, danke erstmal. Ja, es handelt sich zB um einen abgetasteten Sinus (als einfachsten Fall).

Wie kann ich nun aber die Frequenz herausfinden, die zu dem Ersten Element des Arrays gehört?

Und wechselt nach dem (N/2)-ten Element die Frequenz zu negativen Werten (insgesamt also symmetrisch um den Ursprung bei F=0)?



Bezug
                        
Bezug
FFT: Antwort
Status: (Antwort) fertig Status 
Datum: 03:24 Fr 07.01.2011
Autor: Event_Horizon

Hallo!

Was du mit den negativen Werten meinst, weiß ich nicht so recht.

Fakt ist erstmal folgendes:

Die FFT berechnet die Anteile von SIN-förmigen Funktionen verschiedener Frequenz in deinem Datensatz. Du bekommst dabei nicht nur eine Amplitude, sondern auch eine Phaseninformation.

Oft wird eine Fourier-Reihe als [mm] $\sum_n a_n*\sin(n\frac{2\pi}{T}*t)+b_n*\cos(n\frac{2\pi}{T}*t) [/mm] $ dargestellt, die Phase wird durch eine Mischung von SIN und COS erzeugt, und aus den [mm] a_n [/mm] und [mm] b_n [/mm] läßt sich sowas wie eine Amplitude angeben (-> Additionstheoreme)

Möglich wäre auch [mm] $\sum_n a_n*\sin(n\frac{2\pi}{T}*t+\phi_n)$ [/mm] , dann bekommt man direkt Phasen und Amplituden.

Meist gibt es einen komplexen Ansatz

[mm] $\sum_n a_n*\exp(i*n\frac{2\pi}{T}*t)=\sum_n a_n*\left(i\sin(n\frac{2\pi}{T}*t)+\cos(n\frac{2\pi}{T}*t)\right) [/mm] $ mit [mm] a_n\in\IC [/mm]

Da hier [mm] a_n\in\IC [/mm] ist, ergibt sich eben so eine Mischung wie im ersten Fall. Real- und Imaginärteil von [mm] a_n [/mm] können dann auch negativ sein, das hat alleine mit der Phase zu tun, aber die Amplitude mußt du auch erstmal aus [mm] a_n [/mm] berechnen.



Zu den Frequenzen: Der erste Wert ist der Fourier-Koeffizient für die Frequenz 0, er steht also für den Offset. Der zweite Wert beschreibt eine SIN-Funktion, die von der Wellenlänge her genau in deinen Datensatz rein paßt, der dritte Wert eine SIN-Funktion mit halber Wellenlänge, ...
Es sollte klar sein, daß deine Datenpunkte irgendwann zu grob sind, um noch höhere Frequenzen / kleinere wellenlängen darzustellen, daher bekommst du genau so viele FFT-Koeffizienten, wie du auch Datenpunkte hast.




Bezug
                                
Bezug
FFT: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 08:35 Fr 07.01.2011
Autor: Curly

Genau, und wieviele der N FFT-Koeffizienten gehören zu positiven Frequenzen?


Und wenn der erste Datensatz den Offset darstellt, wie finde ich dann heraus, zu welcher Frequenz der zweite Datensatz gehört?

Bezug
                                        
Bezug
FFT: Antwort
Status: (Antwort) fertig Status 
Datum: 12:00 Fr 07.01.2011
Autor: Event_Horizon

Hallo!

ich frag mal so: Was verstehst du denn unter "positiven Frequenzen"? Negative Frequenzen gibt es nicht, höchstens 0 für den Offset.


Ansonsten schert sich eine FFT normalerweise nicht um die Zeitachse.

Schau dir mal das Bild an:
[Dateianhang nicht öffentlich]
Oben siehst du einen Datensatz geplottet, mit 80 Punkten. Jetzt denk dir die x-Achse einfach mal weg.

- es gibt keinen Offset.
- In die Daten paßt die Sinus-Funktion exakt drei mal rein.

Unten siehst du die FFT. (Da stimmt nebenbei die Beschriftung der x-Achse nicht.) Die FFT hat eigentlich auch 80 Punkte (koeffizienten), ich habe aber hineingezoomt, damit man diesen Peak besser sieht. Du siehst, daß alle Werte =0 sind, bis auf den für x=3. Und das besagt exakt, daß in die Daten im oberen Plot genau drei Wellenzüge hinein passen, daß deine Daten also eine Sin-Funktion der "Frequenz 3" beschreiben.


Nun bist du selbst dafür verantwortlich, das in eine reale Frequenz oder so umzurechnen. Wenn die Daten innerhalb von 1ms aufgezeichnet wurden, dann wird die wahre Frequenz 3kHz sein.

Die Daten könnten auch aus der Qualitätssicherung der Wellpappe-Produktion stammen, also räumliche Wellen beschreiben. Da macht der Begriff Frequenz keinen Sinn, hier würde man von Wellenlängen oder Wellenzahlen sprechen.


Allerdings muß ich dazu sagen, daß ich auch schon FFT-Implementationen gesehen habe, die doch auf die x-Achse gucken, und dir zu den FFT-Koeffizienten auch gleich Frequenzwerte liefern. Aber letztendlich ist das nur Kosmetik, und hat wenig mit der FFT selbst zu tun.




Dateianhänge:
Anhang Nr. 1 (Typ: png) [nicht öffentlich]
Bezug
                                                
Bezug
FFT: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 15:35 Fr 07.01.2011
Autor: felixf

Moin!

>  [Dateianhang nicht öffentlich]
> [...]
> Du siehst, daß alle Werte =0 sind, bis auf den für x=3.

Naja, der Theoretiker wuerde sagen, dass da ein paar mehr Werte [mm] $\neq [/mm] 0$ sind, die meisten aber vernachlaessigbar klein, bis halt auf den fuer $x = 3$ :-) Das liegt wohl an einem Haufen Rundungsfehlern (sowohl bei der Erstellung der Eingabe sowie bei der FFT selber). Das ist allerdings voellig normal, sollte also niemanden wundern.

LG Felix


Bezug
                                                        
Bezug
FFT: Prima
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 15:44 Fr 07.01.2011
Autor: Infinit

Wow, so ein schönes Bild hätte ich jetzt nicht auf die Schnelle beizaubern können, aber was Du dort siehst, entspricht genau meiner Beschreibung.
Vielen Dank an Felix für die visuelle Unterstützung.
Viele Grüße,
Infinit


Bezug
                                                                
Bezug
FFT: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 10:19 Sa 08.01.2011
Autor: Event_Horizon

Hallo Inifinit!

Naja, das Bild hatte ich noch irgendwo rum fliegen.

Prinzipiell ist das mit Labview erstellt worden, einer graphischen Programmiersprache, wo alle Funktionen inklusive den grafischen Sachen als Symbole vorliegen, und man nur noch "Datenleitungen" dazwischen legen muß. Der Aufwand für dieses Programm hier liegt bei 30 Sekunden.


Bezug
                                        
Bezug
FFT: Die FFT
Status: (Antwort) fertig Status 
Datum: 15:41 Fr 07.01.2011
Autor: Infinit

Hallo curly,
EventHorizon hat Dir Antworten für eine Fourierreihendarstellung gegeben, die zwar mit der Fourier-Transformation verwandt ist, aber eben nicht dasselbe ist.
Bei der Abtastung eines reellwertigen Signals entsteht  nach der FFT eine Spektraldarstellung, die auch negative Frequenzen umfasst. Wo sich jetzt Deine "Nullfrequenz" befindet, hängt von der Implementierung des FFT-Verfahrens ab. Du hast eine gerade Anzahl von Abtastwerten. Diese werden dann normalerweise in einem Array der Größe N mit den Feldindizes 0 bis N-1 abgespeichert. Der FFT-Wert zu Deiner Nullfrequenz befindet sich dann im Feld mit dem Index N/2. Probiere es doch zum Spaß mal mit einem Gleichsignal aus und schaue Dir an, welches Feld überhaupt einen Wert beinhaltet. Die übrigen Felder sollten Null sein bzw. extrem kleine Werte nur aufweisen, je nach Implementierungsgenauigkeit.
ZU Deiner Frage nach der Frequenz kann ich Dich nur wieder auf meinen ersten Beitrag verweisen, Du musst wenigstens den zeitlichen Abtastabstand kennen, um hier was explizites ausrechnen zu können.
Viele Grüße,
Infinit


Bezug
                                                
Bezug
FFT: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 12:17 Sa 08.01.2011
Autor: Curly

Hallo und erstmal vielen Dank für die ausführlichen Hilfestellungen.

Angenommen, ich taste in T = 1ms N = 1024 Werte ab. Ist es dann richtig, dass meine untereste Frequenz, die ich auflösen kann f = 1/T ist, und die maximale Frequenz f = (N/2-1)/T beträgt? (Wobei diese in den ersten N/2 Array-Einträgen enthalten sind.)

Wie kommt dieser Zusammenhang zustande?

Bezug
                                                        
Bezug
FFT: Abtasttheorem
Status: (Antwort) fertig Status 
Datum: 12:24 Sa 08.01.2011
Autor: Infinit

Hallo curly,
Deine Vermutung ist richtig, in meinem ersten Post stand es so auch schon drin. Das Ganze ist eine Folge des Shannonschen Abtasttheorems. Wenn Du ein Signal mit einer Dauer von 1ms abtastet, dann ist der Kehrwert die kleinste darstellbare Frequenz. Diesen Zusammenhang kennst Du übrigens auch aus der Schwingungsphysik.
Viele Grüße,
Infinit


Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Algorithmen und Datenstrukturen"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.englischraum.de
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]