Fast Fourier Transform ( FFT) er en teknik, der ofte anvendes i signalbehandling. En Fouriertransformation tilnærmer enhver kontinuert funktion som summen af periodiske funktioner ( Sines og hygge ) . FFT gør det samme for diskrete signaler - serie af datapunkter snarere end et kontinuerligt defineret funktion . FFT lader dig identificere periodiske komponenter i din diskret signal. Du har måske brug for at identificere en periodisk signal begravet under tilfældig støj eller analysere et signal med flere forskellige periodiske underliggende kilder. MATLAB indeholder en indbygget implementering af FFT at hjælpe dig gøre dette. Ting du skal
MATLAB vektor indeholdende diskret signal data
Vis Flere Instruktioner
Udfør FFT
1
Beregn længden ( antal elementer) af vektoren indeholder dine data. For eksempel, hvis dine data er gemt i en vektor kaldet " d, " type " L = længde ( d) " i MATLAB kommandolinjen uden anførselstegn . L vil nu indeholde antallet af elementer i d
2
Beregn effekt på 2 , der er større end eller lig med L , ved at skrive ". P = nextpow2 ( L ) " i Matlab kommandoen line uden anførselstegn . Hvis L = 1000, for eksempel, vil p være 10 , fordi 2 ^ 10 = 1024
3
Udfør FFT ved at skrive " Y = fft (d, 2 ^ p) . ; "ved MATLAB kommandolinjen uden anførselstegn . Denne kommando tilføjer nuller til d for at få en vektor af længde 2 ^ p , og derefter udfører FFT på 2 ^ p- element vektor. De vedlagte nuller påvirker ikke resultatet af FFT , men FFT kører hurtigere med en vektor , hvis længde er en effekt på 2
resulterende vektor Y giver koefficienter af sinus og cosinus funktioner ved frekvenser spænder fra - . ( 2 ^ p /2 )) til 1 + ( 2 ^ p /2 ) (under forudsætning d blev samplet ved 1 prøve pr sekund , eller 1Hz ) . Disse er sinus og cosinus funktioner, der tilføjer op til det oprindelige signal d. . Y er kompleks , og dets virkelige dele er koefficienterne af sinus funktioner og dens imaginære dele er koefficienterne for cosinus funktioner
4
Behold kun de unikke dele af Y ved at skrive " Y = Y . ( 1: ( (2 ^ p +1) /2 )), "uden anførselstegn på MATLAB kommandolinjen. Dette er nødvendigt, fordi produktionen af FFT er symmetrisk - det er den anden halvdel af Y er simpelthen den komplekst konjugerede af den første halvdel . Nu , Y giver koefficienter af sinus og cosinus funktioner ved frekvenser fra 0 til 1 + ( 2 ^ p /2) ) .
5.
Divide Y ved L /2 ved at skrive " Y = Y. /( L /2 ) "i MATLAB kommandolinjen uden anførselstegn . Dette er nødvendigt, fordi MATLAB default FFT output er ganget med en faktor på L /2 , så det vil være større , hvis d er længere. Dividere med L /2 normaliserer FFT output , så det ikke afhænger af længden af d. .
Plot FFT resultater
6 p Hvis d ikke var samplet ved 1Hz men på nogle frekvens " f ", de faktiske frekvenser repræsenteret i Y vil være 0 til f * (1 + (2 ^ p /2 ))) . Udregne en MATLAB vektor, der indeholder disse frekvenser. Først definere din aktuelle sampling frekvens i en variabel f . Hvis din faktiske samplingsfrekvens var 0,5 Hz (1 prøve hver 2 sekunder) , skal du skrive " f = 0,5; " i MATLAB kommandolinjen uden anførselstegn . Dernæst type " freq = f * ( 0: (1 + (2 ^ p /2 ))) ). " I MATLAB kommandolinjen uden anførselstegn . Nu freq indeholder de faktiske frekvenser repræsenteret i Y.
7
Få amplituden af signalet komponent ved hver frekvens ved at skrive " Ya = abs (Y )" . ved MATLAB kommandolinjen uden anførselstegn .
8
Plot amplitudespektret af signalet ved at skrive " plot ( freq, Ya )" på MATLAB kommandolinjen uden anførselstegn .
< br > 9
Få magt signal komponent ved hver frekvens ved at skrive " Yp = Y. ^ 2" på MATLAB kommandolinjen uden anførselstegn .
10
Plot magt spektrum signal ved at skrive " plot ( freq, Yp )" på MATLAB kommandolinjen uden anførselstegn .