Was macht FFT in MATLAB?

Was Macht Fft In Matlab



Der Schnelle Fourier-Transformation (FFT) bezieht sich auf eine hochoptimierte Version von Diskrete Fourier-Transformation (DFT) das diskrete Signale vom Zeitbereich in den Frequenzbereich umwandelt. Der Frequenzinhalt, die Phase und andere Aspekte des Signals können über beobachtet werden FFT Berechnungen.

In diesem Artikel lernen wir die Funktionsweise von kennen FFT in MATLAB.

FFT verstehen

Der Schnelle Fourier-Transformation (FFT) stellt eine spezielle Technik dar, die uns hilft, Signale anders zu verstehen. Normalerweise werden Signale als Zahlenfolgen dargestellt, die sich im Laufe der Zeit ändern, jedoch mit FFT, Wir können sehen, welche unterschiedlichen Frequenzen im Signal vorhanden sind und wie stark sie sind. Es ist, als würde man ein Signal in seine Noten zerlegen und sehen, wie laut jede Note ist.







Der FFT Der Algorithmus führt viele komplexe Berechnungen an den Signaldaten durch. Es nimmt das Signal, teilt es in kleinere Teile auf und berechnet dann die Frequenzen und ihre Stärken für jeden Teil. Schließlich werden alle Ergebnisse kombiniert, um uns ein Bild vom Frequenzinhalt, den Phasenbeziehungen und anderen wichtigen Eigenschaften des Signals zu geben.



Diese Technik wird in vielen Bereichen eingesetzt, da sie uns hilft, Signale besser zu analysieren und zu verstehen. Zum Beispiel in Signalverarbeitung , wir können benutzen FFT um unerwünschte Geräusche herauszufiltern oder bestimmte Muster zu erkennen. In Audioanalyse können wir verschiedene Geräusche identifizieren oder die Qualität einer Audioaufnahme analysieren. In Bildverarbeitung , FFT kann uns helfen, die räumlichen Frequenzen im Bild zu analysieren. Und in der Telekommunikation FFT wird zum effektiven Senden und Empfangen von Signalen verwendet.



So verwenden Sie FFT in MATLAB

MATLAB bietet eine integrierte Funktion namens fft Das ermöglicht es uns, Leistung zu erbringen Schnelle Fourier-Transformation (FFT) Berechnungen über Signale. Diese Funktion ist einfach zu bedienen und bietet verschiedene Möglichkeiten zur Analyse und Manipulation von Signalen im Frequenzbereich:





Die Syntax für die Verwendung von FFT Funktionen in MATLAB sind unten aufgeführt:

F = fft ( X )

F = fft ( x,n )

F = fft ( x,n,dim )

Hier:



F= fft(x) ergibt die Berechnung der Diskrete Fourier-Transformation (DFT) von x unter Verwendung der Schnelle Fourier-Transformation (FFT) Algorithmus.

  • Wenn x einen Vektor darstellt, fft(x) ergibt die Fourier-Transformation des Vektors.
  • Wenn x eine Matrix darstellt, fft(x) stellt die Fourier-Transformation jeder Spalte bereit, indem jede Spalte als Vektor behandelt wird.

F = fft(x,n) ergibt eine n-Punkt-DFT. F hat die gleiche Größe wie x, wenn kein Wert angegeben wird.

  • Wenn x ein Vektor ist und seine Länge kleiner als n ist, wird x mit nachgestellten Nullen aufgefüllt, bis es n erreicht.
  • Wenn x ein Vektor ist und seine Länge größer als n ist, wird er auf die Länge n gekürzt.
  • Wenn x eine Matrix ist, wird jede Spalte als Vektorfall betrachtet.

F = fft(x,n,dim) ergibt eine Fourier-Transformation entlang der angegebenen Dimension dim. Sagen wir, fft(x, n, 2) gibt die n-Punkt-Fourier-Transformation für jede Zeile an, wenn x eine Matrix darstellt.

Die folgenden Beispiele veranschaulichen die Funktionsweise von FFT Funktion in MATLAB.

Beispiel 1

Wir können benutzen FFT in MATLAB, um die Erzeugung und Analyse eines Signals mit bestimmten Frequenzkomponenten und zufälligem Rauschen zu demonstrieren.

Zum Beispiel:

ls = 2000 ;

fs = 1500 ;

ts = 1 /fs;

tv = ( 0 :ls- 1 ) *ts;

f = 0,6 * ohne ( 2 * Pi * fünfzig *Fernseher ) + 3 * randn ( Größe ( Fernseher ) ) + ohne ( 2 * Pi * 120 *Fernseher ) ;

Parzelle ( 1000 *Fernseher ( 1 : fünfzig ) ,F ( 1 : fünfzig ) )

xlabel ( 'tv (ms)' )

ylabel ( 'f(tv)' )

Titel ( „Verfälschtes Signal mit zufälligem Rauschen im Mittelwert Null“ )

F = fft ( F ) ;

PS2 = Abs ( F/ ls ) ;

PS1 = PS2 ( 1 : ls / 2 + 1 ) ;

PS1 ( 2 :Ende- 1 ) = 2 *PS1 ( 2 :Ende- 1 ) ;

f = fs* ( 0 : ( ls / 2 ) ) / ls ;

Parzelle ( f, PS1 )

Titel ( 'Amplitudenspektrum (einseitig) PS1 für f(t)' )

xlabel ( 'f(Hz)' )

ylabel ( '|PS1(f)|' )

Der bereitgestellte Code generiert ein Signal mit einer Länge von 2000 Proben (ls) , eine Abtastfrequenz von 1500 Hz (fs) , und ein Probenahmezeitraum (ts) . Der Zeitvektor (tv) wird basierend auf diesen Parametern erstellt. Das Signal F besteht aus einer Kombination sinusförmiger Komponenten bei 50 Hz und 120 Hz sowie zufälligem Rauschen mit Nullmittelwert. Anschließend wird es mit einem Segment der ersten 50 Proben aufgezeichnet. Der Code berechnet weiter FFT des Signals und berechnet die Amplitudenspektrum (PS1) . Abschließend wird das Amplitudenspektrum über den entsprechenden Frequenzen (f) in Hz aufgetragen.

Beispiel 2

Hier ist ein weiteres Beispiel, das das verwendet FFT Funktion in MATLAB für die Gaußsche Impulstransformation vom Zeitbereich in den Frequenzbereich.

fs = 500 ;

ts = - 0,5 : 1 /fs: 0,5 ;

ls = Länge ( ts ) ;

f = 1 / ( 4 * Quadrat ( 2 * Pi * 0,02 ) ) * ( exp ( -ts.^ 2 / ( 2 * 0,02 ) ) ) ;

Parzelle ( ts,f )

xlabel ( 'Zeit (t)' )

ylabel ( 'f(t)' )

Titel ( 'Zeitbereich' )

zB = 2 ^nextpow2 ( ls ) ;

f = fs* ( 0 : ( z.B/ 2 ) ) /z.B;

F = fft ( f,np ) ;

PF = Abs ( F/np ) ;

Parzelle ( f,PF ( 1 :z.B/ 2 + 1 ) )

xlabel ( '(F)' )

ylabel ( '|PF(f)|' )

Titel ( 'Frequenzbereich' )

Der bereitgestellte Code erzeugt ein Gaußsches Impulssignal im Zeitbereich und analysiert seinen Frequenzinhalt unter Verwendung von Schnelle Fourier-Transformation (FFT) in MATLAB. Das Zeitbereichssignal wird aufgezeichnet und dann das FFT wird durchgeführt, um die Frequenzbereichsdarstellung zu erhalten. Das Ergebnis Amplitudenspektrum wird gegen die entsprechenden Frequenzen aufgetragen.

Beispiel 3

Das folgende Beispiel generiert drei Sinussignale mit unterschiedlichen Frequenzen und stellt sie mithilfe von im Zeitbereich dar FFT Funktion in MATLAB.

fs = 2500 ;

ts = 1 /fs;

ls = 3000 ;

t = ( 0 :ls- 1 ) *ts;

r1 = ohne ( 3 * Pi * 60 *T ) ;

r2 = ohne ( 3 * Pi * 140 *T ) ;

r3 = ohne ( 3 * Pi * 350 *T ) ;

f = [ r1; r2; r3 ] ;

für k = 1 : 3

Nebenhandlung ( 3 , 1 ,k )

Parzelle ( T ( 1 : 250 ) ,F ( k, 1 : 250 ) )

Titel ( [ 'Zeile Nr.' , num2str ( k ) , ' (Zeitbereich)' ] )

Ende

zB = 2 ^nextpow2 ( ls ) ;

d = 2 ;

F = fft ( f,np,d ) ;

PS2 = Abs ( F/ ls ) ;

PS1 = PS2 ( :, 1 :z.B/ 2 + 1 ) ;

PS1 ( :, 2 :Ende- 1 ) = 2 *PS1 ( :, 2 :Ende- 1 ) ;

für k= 1 : 3

Nebenhandlung ( 3 , 1 ,k )

Parzelle ( 0 : ( fs/np ) : ( fs/ 2 -fs/np ) ,PS1 ( k, 1 :z.B/ 2 ) )

Titel ( [ 'Zeile Nr.' , num2str ( k ) , '(Frequenzbereich)' ] )

Ende

Im obigen Code werden drei Sinuswellen r1, r2 und r3 im Zeitbereich im Ausgabefenster angezeigt. Das Frequenzbereichssignal „PS1“ wird erstellt, indem die FFT-Funktion der Wellen verwendet wird, um jedes ihrer einzelnen einseitigen Amplitudenspektren zu berechnen.

Abschluss


Der FFT ist ein wertvolles Werkzeug, das uns hilft, Signale anders zu verstehen, indem es ihren Frequenzinhalt analysiert. Mit der in MATLAB integrierten Funktion fft FFT Berechnungen von Signalen werden bequemer. Mit dieser Funktion können wir entscheidende Details über die verschiedenen Frequenzen und die relativen Intensitäten dieser Frequenzen erfahren, indem wir Daten vom Zeitbereich in den Frequenzbereich konvertieren. Der obige Leitfaden ist von entscheidender Bedeutung, um ein tieferes Verständnis der Signaleigenschaften zu erlangen und fundierte Entscheidungen in verschiedenen Anwendungen zu treffen.