Fast Fourier Transform ( FFT ) er en teknikk som ofte brukes i signalbehandling. En Fourier transform tilnærmet enhver kontinuerlig funksjon som summen av periodiske funksjoner ( sinus og cosinus ) . FFT gjør det samme for diskrete signaler - serie av datapunkter snarere enn en kontinuerlig definert funksjon . FFT lar deg identifisere periodiske komponenter i diskret signal. Du må kanskje identifisere en periodisk signal begravd under tilfeldig støy , eller analysere et signal med flere ulike periodiske underliggende kilder . MATLAB har en innebygd i implementeringen av FFT å hjelpe deg med dette . Du trenger
MATLAB vektor som inneholder diskret signal data
Vis flere instruksjoner
Utfør FFT
en
Beregn lengden (antall elementer ) av vektor inneholder dine data . For eksempel, hvis dataene blir lagret i en vektor som heter "d , " type "L = lengde ( d ) ; " i MATLAB kommando linje uten anførselstegn . L vil nå inneholde antallet elementer i d
2
Beregn den potens av 2 som er større enn eller lik l , ved å skrive . " P = nextpow2 ( L ), " i MATLAB kommando linje uten anførselstegn . Hvis L = 1000 , for eksempel, vil p være 10, fordi 2 ^ 10 = 1024
3
Utfør FFT ved å skrive " Y = fft (d, 2 ^ p ) . ; "i MATLAB kommandolinjen uten anførselstegn . Denne kommandoen legger til nuller til d for å få en vektor av lengde 2 ^ p og deretter utfører FFT på 2 ^ p - element vektor. De vedlagte nuller påvirker ikke resultatet av FFT , men FFT går raskere med en vektor som har lengde er en potens av to
Den resulterende vektor Y gir koeffisientene sinus og cosinus funksjoner på frekvenser fra - . ( 2 ^ p /2) ) til 1 + (2 ^ p /2) (forutsatt at d er samplet ved en prøve per sekund , eller 1Hz ) . Dette er sinus og cosinus funksjoner som legger opp til det opprinnelige signalet d . Y er kompleks , dens virkelige deler er koeffisientene til sinus -funksjoner , og dens imaginære deler er koeffisientene til cosinusfunksjonene
4
Hold bare de unike delene av Y ved å skrive " Y = Y . ( 1 : ( ( 2 ^ p +1) /2 )); " uten anførselstegn på MATLAB kommandolinjen . Dette er nødvendig fordi utgangen fra FFT er symmetrisk - det vil si at den andre halvdelen av Y simpelthen den komplekse konjugerte av første halvdel . Nå gir Y koeffisientene sinus og cosinus funksjoner på frekvenser 0-1 + ( 2 ^ p /2 ) ) .
5
Divide Y av L /2 ved å skrive " Y = Y. /( L /2 ) ; "i MATLAB kommando linje uten anførselstegn . Dette er nødvendig fordi MATLAB sin standard FFT utgang er multiplisert med en faktor på l /2, slik at det vil være større dersom d er lengre. Dividere med L /2 normaliserer FFT utgang slik at den ikke er avhengig av lengden på d. .
Plot FFT resulterer
6 p Hvis d ikke ble samplet på 1 Hz men ved noen frekvens "f ", det faktiske frekvenser som er representert i Y vil være 0 til f * (1 + (2 ^ p /2 ))) . Beregn en MATLAB vektor som inneholder disse frekvensene . Først definerer din faktiske samplingsfrekvens i en variabel f . Hvis den reelle samplingsfrekvens var 0,5 Hz ( 1 prøve hvert 2. sekund ) , vil du skrive " f = 0.5; " på MATLAB kommando linje uten anførselstegn . Deretter skriver du inn " freq = f * ( 0 : ( 1 + ( 2 ^ p /2 ) ) ) . )" På MATLAB kommando linje uten anførselstegn . Nå freq inneholder faktiske frekvenser representert i Y.
7
Få amplituden av signalet komponent ved hver frekvens ved å skrive " Ya = abs (Y )" . på MATLAB kommando linje uten anførselstegn .
8
Plot amplitude spekteret av signalet ved å skrive " plot ( freq, Ya )" på MATLAB kommando linje uten anførselstegn .
9
Få kraften av signalet komponent ved hver frekvens ved å skrive " Yp = Y. ^ 2 " i MATLAB kommando linje uten anførselstegn .
10
Plot kraften spekteret av signal ved å skrive " plot ( freq, Yp )" på MATLAB kommando linje uten anførselstegn .