Fast Fourier Transform ( FFT ) is een techniek die veelvuldig bij signaalverwerking . Een Fourier transformatie benadert elke continue functie als de som van periodieke functies ( sinus en cosinus ) . FFT doet hetzelfde voor discrete signalen - reeks gegevens punten in plaats van een continu gedefinieerde functie . FFT kunt u periodieke componenten in uw discreet signaal te identificeren . Mogelijk moet u een periodiek signaal begraven onder willekeurige ruis te identificeren , te analyseren of een signaal met verschillende periodieke onderliggende bronnen . MATLAB bevat een ingebouwde uitvoering van FFT te helpen dit doen . Wat je nodig hebt MATLAB vector die discreet signaal data Toon Meer Aanwijzingen Voer de FFT 1 Bereken de lengte ( aantal elementen ) van de vector met uw gegevens . Bijvoorbeeld , als uw gegevens worden opgeslagen in een vector genaamd " d , " type " L = lengte ( d ) , " bij de MATLAB- opdrachtregel zonder aanhalingstekens . L zal nu het aantal elementen in d bevat 2 Bereken de macht van 2 die groter dan of gelijk aan L , door te typen . ' P = nextpow2 ( L ) " op MATLAB command lijn zonder aanhalingstekens . Als L = 1000 , bijvoorbeeld , zal p zijn 10 , omdat 2 ^ 10 = 1024 3 Voer de FFT door het intikken van " Y = FFT ( d , 2 ^ p ) . ; " bij de MATLAB opdrachtregel zonder aanhalingstekens . Dit commando voegt nullen op d om een vector van lengte 2 ^ p te krijgen en vervolgens voert FFT op de 2 ^ p - element vector . De bijgevoegde nullen laten de resultaten van FFT , maar FFT sneller werkt met een vector waarvan de lengte een macht van 2 De verkregen vector Y geeft de coëfficiënten van sinus en cosinus functies op frequenties van - . ( 2 ^ p /2 )) naar 1 + ( 2 ^ p /2 ) ( d uitgaande werd bemonsterd met 1 monster per seconde , of 1 Hz ) . Dit zijn de sinus en cosinus functies die optellen tot het oorspronkelijke signaal d . Y is complex, de reële delen zijn de coëfficiënten van de sinus functies en de imaginaire delen van de coëfficiënten van de cosinusfuncties 4 Uitsluitend de unieke delen van Y schrijven " Y = Y . ( 1 : ( ( 2 ^ p +1 ) /2 ) ) ; " zonder de aanhalingstekens in de MATLAB- opdrachtregel . Dit is noodzakelijk omdat de output van FFT symmetrisch - dat is , de tweede helft van Y is gewoon de complex geconjugeerde van de eerste helft. Nu , Y geeft de coëfficiënten van sinus en cosinus functie bij frequenties 0-1 + ( 2 ^ p /2 ) ) . 5 Divide Y van L /2 schrijven " Y = Y. /( L /2 ) ; " bij de MATLAB opdrachtregel zonder aanhalingstekens . Dit is nodig omdat MATLAB standaard FFT uitgang wordt vermenigvuldigd met een factor L /2 , zodat het zal groter zijn als d langer . Delen door L /2 normaliseert de FFT -uitgang , zodat het niet afhankelijk is van de lengte van d . Perceel FFT resulteert 6 Als d niet werd bemonsterd op 1Hz maar op een frequentie " f ", de werkelijke frequenties vertegenwoordigd Y gelijk aan 0 tot f * ( 1 + ( 2 ^ p /2 ) ) ) . Bereken een MATLAB vector die deze frequenties . Definieer eerst uw werkelijke bemonsteringsfrequentie in een variabele f . Als uw werkelijke bemonsteringsfrequentie was 0,5 Hz ( 1 monster elke 2 seconden ) , typt u " f = 0.5 ; " bij de MATLAB opdrachtregel zonder aanhalingstekens . Typ vervolgens " freq = f * ( 0 : ( 1 + ( 2 ^ p /2 ) ) ) . ) " Bij de MATLAB opdrachtregel zonder aanhalingstekens . Nu freq bevat de werkelijke frequenties vertegenwoordigd in Y. 7 Verkrijg de amplitude van de component signaal bij elke frequentie door het intikken van " Ya = abs ( Y ) " . bij de MATLAB opdrachtregel zonder aanhalingstekens . Perceel 8 de amplitude spectrum van het signaal door te typen " plot ( freq , Ya ) " bij de MATLAB opdrachtregel zonder aanhalingstekens . < br > 9 Haal de kracht van de component signaal bij elke frequentie door het intikken van " Yp = Y. ^ 2 " bij de MATLAB opdrachtregel zonder aanhalingstekens . Perceel 10 het vermogensspectrum van de signaal door te typen " plot ( freq , Yp ) " bij de MATLAB opdrachtregel zonder aanhalingstekens .
|