Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   
Bücher:

Fachkräfte:
Entwicklungsingenieur (m/w) für modellbasierte Softwareentwicklung
Modellbasierte Softwareentwicklung mit MATLAB/Simulink und dSPACE TargetLink
Elektronische Fahrwerksysteme GmbH - Ingolstadt

Softwareentwickler (m/w) für automatische Codegenerierung
Softwareentwicklung mit MATLAB/Simulink und dSPACE TargetLink im Bereich Fahrwerkregelsysteme
Elektronische Fahrwerksysteme GmbH - Ingolstadt

Software-Entwicklungsingenieur (m/w) Referenzierungsmethoden autonomes Fahren
Automatisierung von Bewertungsmethoden und Kalibrierverfahren nach Kundenanforderungen
Elektronische Fahrwerksysteme GmbH - Ingolstadt

Embedded Software- Entwickler (m/w) - Hardwarenahe Software für innovative Steuerungssysteme
Design, Implementierung und Test von Embedded Software
DR. JOHANNES HEIDENHAIN GmbH - Traunreut (Raum Rosenheim)

Application Engineer (m/w)
Unterstützung des Vertriebs bei der Erstellung von Angeboten und Präsentation beim Kunden
Control Techniques GmbH - Hennef

weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

FFT? Was steht eigentlich richtig dahinter?

 

Scriptor
Forum-Century

Forum-Century


Beiträge: 217
Anmeldedatum: 22.02.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.12.2010, 15:37     Titel: FFT? Was steht eigentlich richtig dahinter?
  Antworten mit Zitat      
Sehr geehrte Comunity. Ich habe im Signalverarbeitungsthread festgestellt, dass anscheinend viele nicht wissen, was hinter der FFT mathematisch/algorithmisch eigentlich steht. Es geht nicht um die Beschleunigung der DFT, sondern nur um die reine Mathematik.

Dadurch dass die Matlab FFT so simpel gehalten ist

(siehe hier klick),

kann sie etwas verwirrend sein.Warum dass so ist erkläre ich jetzt hier:

Angenommen wir haben eine zu messende Vorrichtung an einen Abtaster angeschlossen und erhalten ein Signal, das ausgehend vom Zeitpunkt null konstant abgetastet wird. Dieses Signal nennen wir y(t).

Dieses Signal y(t) hat folgende Eigenschaften. Es hat die Anzahl der Samples N und die Abtastdauer T. Die Samplefrequenz Fs erhalten wir durch

Fs = N/T;

Y(w) = sum_über_y f(t)*exp(-i*2*pi*f*t)

Ich beschreibe das immer als Matrix, da das anschaulicher ist.

Y=y*E

Y ist wieder unser Spektrum, y unsere Zeitfunktion und E die Matrix mit den Exponentiellen aus der Gleichung auch Fouriermatrix genannt.

Diese E wird folgendermaßen gebildet.

Man hat seine gegebenen Zeitachsenpunkte t und gewünschten Frequenzpunkte f.
Wenn man im Matlab diese nun mit t'*w multipliziert, hat man diese zu einer Matrix mit der Größe nt * nw. Schaut euch diese Daten schonmal an. Man kann sehr gut erkennen, wie diese Matrix aufgebaut ist. Oben links hat man die erste Frequenz mit dem ersten Zeitpunkt multipliziert, unten rechts die beiden letzten, links unten die erste Frequenz und letzten Zeitpunkt und so weiter.

Nun werden alle Matrixpunkte mit -i*2*pi multipliziert und als Exponent von e genommen.

Es entsteht folgender Zwischenausdruck

E = exp(-i*2*pi*t'*f)

Dieser Ausdruck wird nun einfach nach dem

Falkschen Schema

mit y*E multipliziert zu Y. Nun spielen wir einfach mal mit t und f rum.
Angenommen man multipliziert t mit 2. Dann muss f halbiert werden um ztum gleichen Ergebnis zu kommen. Wie macht das nun die FFT in Matlab?

Die FFT geht von einigen Voraussetzungen aus.

Es geht davon aus...

- dass t immer von 0 aus losgeht!!
- dass t und f Ganzzahlige sind!!
- dass die Anzahl von t und w immer! gleich sind!!
- dass t wird noch einmal durch die Gesamtzahl geteilt wird (siehe Gleichung auf FFTW. n ist die Anzahl der Samples und k die Frequenz)

Nun stellen wir mal die FFT Fouriermatrix mit der normalen gegenüber, aber nur die exponenten.

-i*2*pi*k*j/n und -i*2*pi*f'*t

Was fällt auf?

- k entspricht w (eigentlich auch k', ist aber keine Matrizenschreibweise).
- t entspricht j/n
- j ist die Laufvariable von 0 bis n-1 oder n, also etwas zwischen 0 und eins. Das Fenster was die FFT betrachtet geht also von 0 auf 1.
und k ist auch eine Matrix von 0 : n-1.

Zurück zu unser anfangs besprochenen Aufnahmereihe. Sie beinhaltet beispielsweise Datenpunkte bei t = 0 :0.2: 10.2. Deren Anzahl also 52. Wir wissen auch dass die FFT nach oben beschriebenen Vorschriften handelt.

setzen wir also gleich

(j/n)'*k = t'*f

((0:51)/52)'*(0:51) = (0:0.2:10.2)'*f

Uns fehlt also f. Bei der FFT können wir f nicht ganz festlegen wie gesagt. Es errechnet sich einfach. Ich ziehe mal dieGleichungen auseinander.

((0:51)/52)'*(0:51) = (0:51)'/5*f

gekürzt ergibt das
(0:51)/52 = f/5

f = 5/52(0:51)

f geht also von rund 0:1/10.2:5

ICh hoffe die Zusammenhänge klar und deutlich rübergebracht zu haben.

Falls nicht stoßt mich an oder korrigiert mich gegebenenfalls.

Mfg Ich!
Private Nachricht senden Benutzer-Profile anzeigen


Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de goPCB.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2017 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.