FFT in MATLAB veranschaulicht

March 7

FFT in MATLAB veranschaulicht

Schnelle Fourier Transform (FFT) ist eine Technik, die häufig in der Signalverarbeitung verwendet. Eine Fourier-Transformation entspricht jede stetige Funktion als Summe von periodischen Funktionen (Sinus- und Kosinussatz). FFT macht das gleiche für zeitdiskrete Signale--Datenreihen verweist, anstatt eine kontinuierlich definierte Funktion. FFT können Sie regelmäßige Komponenten in Ihr diskretes Signal zu identifizieren. Sie müssen möglicherweise ein periodisches Signal, begraben unter Rauschen zu identifizieren, oder ein Signal mit verschiedenen periodischen zugrunde liegenden Quellen zu analysieren. MATLAB enthält eine integrierte Implementierung FFT, Ihnen dabei zu helfen.

Anweisungen

Durchführen der FFT

1 Berechnen Sie die Länge (Anzahl der Elemente) des Vektors, die Ihre Daten enthält. Geben Sie beispielsweise, wenn Ihre Daten in einem Vektor namens "d" gespeichert ist, "L = length(d);" in der MATLAB-Befehlszeile ohne Anführungszeichen. L wird nun die Anzahl der Elemente in d enthalten.

2 Berechnet die Potenz von 2, die größer als oder gleich L, indem Sie eingeben ist "p = nextpow2(L);" in der MATLAB-Befehlszeile ohne Anführungszeichen. Wenn L = 1000, z. B. p 10, sein wird, weil 2 ^ 10 = 1024.

3 Durchführen die FFT durch Eingabe von "Y = fft(d,2^p);" in der MATLAB-Befehlszeile ohne Anführungszeichen. Dieser Befehl fügt Nullen zu d zu einem Vektor der Länge 2 ^ p und führt Sie dann auf den 2 FFT ^ p-Elements Vektor. Die angehängten Nullen haben keinen Einfluss auf das Ergebnis der FFT, aber FFT läuft schneller mit einem Vektor, dessen Länge eine Potenz von 2 ist.

Der resultierende Vektor Y gibt die Koeffizienten der Sinus- und Kosinus-Funktionen bei Frequenzen von-(2^p/2)) bis hin zu 1 + (2 ^ P/2) (d mit 1 Probe pro Sekunde oder 1 Hz abgetastet wurde vorausgesetzt). Dies sind die Sinus- und Kosinus-Funktionen, die bis zu hinzufügen, dass die ursprüngliche Signal d. Y Komplex ist; seiner realen Teile sind die Koeffizienten der Sinus-Funktionen und seiner imaginären Teile sind die Koeffizienten der Kosinus-Funktionen.

4 Halten Sie nur die einzigartige Teile des Y durch Eingabe von "Y Y(1:((2^p+1)/2)); =" ohne Anführungszeichen in der MATLAB-Befehlszeile. Dies ist notwendig, weil die Ausgabe der FFT symmetrisch ist--im zweite Halbjahr Y einfach die konjugiert des ersten Halbjahres ist. Nun, Y gibt die Koeffizienten der Sinus- und Kosinus-Funktionen bei Frequenzen von 0 bis 1 + (2 ^ P/2)).

5 Teilen Sie Y durch L/2 durch Eingabe von "Y = Y./(L/2);" in der MATLAB-Befehlszeile ohne Anführungszeichen. Dies ist notwendig, weil MATLABs Standardausgabe FFT mit einem Faktor von L/2, multipliziert wird so es größer sein wird, wenn d länger ist. Division durch L/2 normalisiert die FFT-Ausgabe, so dass sie nicht auf die Länge des d abhängt.

Grundstück-FFT-Ergebnisse

6 Wenn d bei 1 Hz, aber bei einigen Frequenz "f" nicht abgetastet wurde, werden die tatsächlichen Frequenzen vertreten in Y 0 bis f(1 + (2 ^ P/2))). Berechnen Sie einen MATLAB-Vektor, der diese Frequenzen. Zunächst definieren Sie Ihre tatsächliche Abtastfrequenz in eine Variable f. Wenn Ihre tatsächlichen Sampling-Frequenz 0,5 Hz war (1 Probe alle 2 Sekunden), geben Sie "f = 0,5;" in der MATLAB-Befehlszeile ohne Anführungszeichen. Geben Sie als nächstes "Freq = f. (0: (1 + (2 ^ P/2))) " in der MATLAB-Befehlszeile ohne Anführungszeichen. Freq enthält nun die tatsächlichen Frequenzen in Y vertreten.

7 Erhalten Sie die Amplitude der Signal-Komponente bei jeder Frequenz durch Eingabe von "Ya = abs(Y)". in der MATLAB-Befehlszeile ohne Anführungszeichen.

8 Zeichnen Sie das Spektrum der Amplitude des Signals durch Eingabe von "Plot(freq, Ya)" in der MATLAB-Befehlszeile ohne Anführungszeichen.

9 Erhalten Sie die Kraft der Signal-Komponente bei jeder Frequenz durch Eingabe von "Yp = Y. ^ 2" in der MATLAB-Befehlszeile ohne Anführungszeichen.

10 Zeichnen Sie das Leistungsspektrum des Signals "Plot (Freq, Yp)" an der MATLAB-Kommandozeile ohne Anführungszeichen eingeben.

Tipps & Warnungen

  • Je länger die Eingabedaten Vektor d, bessere Frequenzauflösung erhalten Sie.