Fast Fourier Transform ( FFT ) är en teknik som ofta används i signalbehandling . En Fouriertransform approximerar varje kontinuerlig funktion som summan av periodiska funktioner ( sinus-och cosinussvängningar ) . FFT gör samma sak för diskreta signaler - serie datapunkter snarare än ett kontinuerligt definierad funktion . FFT kan du identifiera återkommande komponenter i din diskret signal . Du kan behöva identifiera en periodisk signal begravda under slumpmässigt brus , eller analysera en signal med flera olika periodiska underliggande källor . MATLAB har en inbyggd implementering av FFT för att hjälpa dig att göra detta . Saker du behöver
MATLAB vektor innehållande diskret signal uppgifter
Visa fler instruktioner
Utför FFT
1
Beräkna längden ( antalet element ) av vektorn som innehåller dina data . Till exempel, om dina data lagras i en vektor som heter " d , " typ " L = längd ( d ) , " på kommandoraden i MATLAB utan citattecken . L innehåller nu antalet element i d
2
Beräkna kraften i 2 som är större än eller lika med L , genom att skriva . " P = nextpow2 ( L ) , " vid MATLAB kommandot rad utan citationstecken . Om L = 1000 , till exempel , kommer p att vara 10 , eftersom 2 ^ 10 = 1024
3
Utför FFT genom att skriva " Y = fft ( d , 2 ^ p ) . ; " på kommandoraden i MATLAB utan citattecken . Detta kommando lägger nollor till d för att få en vektor av längd 2 ^ p och sedan utför FFT på 2 ^ p - elementet vektor. De bifogade nollor påverkar inte resultatet av FFT , men FFT går snabbare med en vektor vars längd är en effekt av 2 Review
Den resulterande vektorn Y ger koefficienterna för sinus och cosinus funktioner vid frekvenser som sträcker sig från - . ( 2 ^ p /2 ) ) till 1 + ( 2 ^ p /2 ) (förutsatt d provtogs vid ett prov per sekund , eller 1 Hz ) . Dessa är sinus och cosinus funktioner som lägga till upp till den ursprungliga signalen d. . Y är komplex , dess reella delar är koefficienterna för sine funktioner , och dess imaginära delarna är de koefficienter cosinusfunktioner
4
Behåll endast de unika delarna av Y genom att skriva " Y = Y . ( 1 : ( ( 2 ^ p +1 ) /2 ) ) ; " utan citationstecken på kommandoraden i MATLAB . Detta är nödvändigt eftersom produktionen av FFT är symmetrisk - det är , är den andra halvan av Y helt enkelt det komplexa konjugatet av första halvlek . Nu ger Y koefficienterna för sinus och cosinus funktioner vid frekvenser från 0 till 1 + ( 2 ^ p /2 ) ) .
5
Divide Y av L /2 genom att skriva " Y = Y. /( L /2 ) , " på kommandoraden i MATLAB utan citattecken . Detta är nödvändigt eftersom MATLABs standard FFT utgång multipliceras med en faktor L /2 , så det kommer att bli större om d är längre . Dividera med L /2 normaliserar FFT utgång så att det inte beror på längden av d. .
Plot FFT resultat
6 p Om d inte provtogs vid 1Hz men någon frekvens " f , " de faktiska frekvenserna representerade i Y blir 0 till f * ( 1 + ( 2 ^ p /2 ) ) ) . Beräkna ett MATLAB -vektor innehållande dessa frekvenser . Först definierar din aktuella samplingsfrekvensen i en variabel f. . Om din aktuella samplingsfrekvensen var 0,5 Hz ( 1 prov var 2 sek ) , skulle du skriva " f = 0.5 , " på kommandoraden i MATLAB utan citattecken . Nästa , typ " FREQ = f * ( 0 : ( 1 + ( 2 ^ p /2 ) ) ) . ) " På kommandoraden i MATLAB utan citattecken . Nu frekv innehåller de faktiska frekvenser representerade i Y.
7
Få amplituden av signalkomponenten vid varje frekvens genom att skriva " Ya = abs (Y) " . på kommandoraden i MATLAB utan citattecken .
8
Plot amplituden spektrum av signalen genom att skriva " plot ( freq, Ya ) " på kommandoraden i MATLAB utan citattecken .
9
Få kraften hos signalkomponenten vid varje frekvens genom att skriva " Yp = Y. ^ 2 " på kommandoraden i MATLAB utan citattecken .
10
Plot effektspektrumet av signalen genom att skriva " plot ( freq, Yp ) " på kommandoraden i MATLAB utan citattecken .