Hva gjør FFT i MATLAB?

Hva Gjor Fft I Matlab



De Fast Fourier Transform (FFT) refererer til en svært optimalisert versjon av Diskret Fourier Transform (DFT) som transformerer diskrete signaler gjennom tidsdomenet til frekvensdomenet. Frekvensinnholdet, fasen og andre aspekter av signalet kan observeres via FFT beregninger.

Denne artikkelen skal lære oss om hvordan FFT i MATLAB.

Forstå FFT

De Fast Fourier Transform (FFT) representerer spesiell teknikk som hjelper oss å forstå signaler annerledes. Normalt vises signaler som sekvenser av tall som endres over tid, men med FFT, vi kan se hvilke ulike frekvenser som finnes i signalet og hvor sterke de er. Det er som å bryte ned et signal i musikknotene og se hvor høy hver tone er.







De FFT Algoritmen gjør mye kompleks matematikk på signaldataene. Den tar signalet og deler det opp i mindre deler, og beregner deretter frekvensene og styrken deres for hver del. Til slutt kombinerer den alle resultatene for å gi oss et bilde av signalets frekvensinnhold, faseforhold og andre viktige egenskaper.



Denne teknikken brukes på mange felt fordi den hjelper oss å analysere og forstå signaler bedre. For eksempel i Signal Prosessering , Vi kan bruke FFT for å filtrere ut uønsket støy eller oppdage spesifikke mønstre. I lydanalyse , kan vi identifisere forskjellige lyder eller analysere kvaliteten på et lydopptak. I bildebehandling , FFT kan hjelpe oss med å analysere de romlige frekvensene i bildet. Og innen telekommunikasjon, FFT brukes til å sende og motta signaler effektivt.



Hvordan bruke FFT i MATLAB

MATLAB har en innebygd funksjon kalt fft som lar oss prestere Fast Fourier Transform (FFT) beregninger på signaler. Denne funksjonen er enkel å bruke og tilbyr ulike alternativer for å analysere og manipulere signaler i frekvensdomenet:





Syntaksen for å bruke FFT funksjoner i MATLAB er gitt nedenfor:

F = fft ( x )

F = fft ( x,n )

F = fft ( x,n,dim )

Her:



F= fft(x) gir beregningen av Diskret Fourier Transform (DFT) av x ved å bruke Fast Fourier Transform (FFT) algoritme.

  • Hvis x representerer en vektor, fft(x) gir vektorens Fourier-transformasjon.
  • Hvis x representerer en matrise, fft(x) gir Fourier-transformasjonen til hver kolonne ved å behandle hver kolonne som en vektor.

F = fft(x,n) gir n-punkts DFT. F har samme størrelse som x når ingen verdi er oppgitt.

  • Hvis x er en vektor og lengden er mindre enn n, får x utfylling med etterfølgende nuller til den når n.
  • Hvis x er en vektor og lengden overstiger n, avkortes den til denne lengden n.
  • Hvis x er en matrise, betraktes hver kolonne som et vektortilfelle.

F = fft(x,n,dim) gir Fourier Transform langs den gitte dimensjonen dim. La oss si, fft(x, n, 2) gir n-punkts Fourier-transformasjonen for hver rad hvis x representerer en matrise.

Følgende eksempler illustrerer hvordan FFT funksjon i MATLAB.

Eksempel 1

Vi kan bruke FFT i MATLAB for å demonstrere generering og analyse av et signal med spesifikke frekvenskomponenter og tilfeldig støy.

For eksempel:

ls = 2000 ;

fs = 1500 ;

ts = 1 /fs;

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

f = 0,6 * uten ( 2 * pi * femti *TV ) + 3 * randn ( størrelse ( TV ) ) + uten ( 2 * pi * 120 *TV ) ;

plott ( 1000 *TV ( 1 : femti ) ,f ( 1 : femti ) )

xlabel ( 'tv (ms)' )

ylabel ( 'f(tv)' )

tittel ( ' Ødelagt signal med null gjennomsnittlig tilfeldig støy' )

F = fft ( f ) ;

PS2 = abs ( F/ ls ) ;

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

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

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

plott ( f, PS1 )

tittel ( 'Amplitudespektrum (ensidig) PS1 for f(t)' )

xlabel ( 'f(Hz)' )

ylabel ( '|PS1(f)|' )

Den oppgitte koden genererer et signal med lengden på 2000 prøver (ls) , en prøvetakingsfrekvens på 1500 Hz (fs) , og en prøveperiode (ts) . De tidsvektor (tv) opprettes basert på disse parameterne. Signalet f er sammensatt av en kombinasjon av sinusformede komponenter ved 50 Hz og 120 Hz, sammen med nullmiddel tilfeldig støy. Det plottes deretter med et segment av de første 50 prøvene. Koden beregner videre FFT av signalet og beregner amplitudespektrum (PS1) . Til slutt plottes amplitudespekteret mot de tilsvarende frekvensene (f) i Hz.

Eksempel 2

Her er et annet eksempel som bruker FFT funksjon i MATLAB for gaussisk pulstransformasjon gjennom tidsdomenet til frekvensdomenet.

fs = 500 ;

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

ls = lengde ( ts ) ;

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

plott ( ts,f )

xlabel ( 'Tid (t)' )

ylabel ( 'f(t)' )

tittel ( 'Tids domene' )

f.eks = 2 ^nextpow2 ( ls ) ;

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

F = fft ( f,np ) ;

PF = abs ( F/np ) ;

plott ( f,PF ( 1 :f.eks/ 2 + 1 ) )

xlabel ( '(f)' )

ylabel ( '|PF(f)|' )

tittel ( 'Frekvensdomene' )

Den medfølgende koden genererer et gaussisk pulssignal i tidsdomenet og analyserer frekvensinnholdet ved hjelp av Fast Fourier Transform (FFT) i MATLAB. Tidsdomenesignalet plottes, og deretter FFT utføres for å oppnå frekvensdomenerepresentasjonen. Resultatet amplitudespektrum plottes mot de tilsvarende frekvensene.

Eksempel 3

Følgende eksempel genererer tre sinusformede signaler med forskjellige frekvenser og plotter dem i tidsdomenet ved hjelp av FFT funksjon i MATLAB.

fs = 2500 ;

ts = 1 /fs;

ls = 3000 ;

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

r1 = uten ( 3 * pi * 60 *t ) ;

r2 = uten ( 3 * pi * 140 *t ) ;

r3 = uten ( 3 * pi * 350 *t ) ;

f = [ r1; r2; r3 ] ;

til k = 1 : 3

delplott ( 3 , 1 ,k )

plott ( t ( 1 : 250 ) ,f ( k, 1 : 250 ) )

tittel ( [ 'Rekke nr' , num2str ( k ) , ' (Tids domene)' ] )

slutt

f.eks = 2 ^nextpow2 ( ls ) ;

d = 2 ;

F = fft ( f,np,d ) ;

PS2 = abs ( F/ ls ) ;

PS1 = PS2 ( :, 1 :f.eks/ 2 + 1 ) ;

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

til k= 1 : 3

delplott ( 3 , 1 ,k )

plott ( 0 : ( fs/np ) : ( fs/ 2 -fs/np ) ,PS1 ( k, 1 :f.eks/ 2 ) )

tittel ( [ 'rad nr' , num2str ( k ) , '(Frekvensdomene)' ] )

slutt

I koden ovenfor vises tre sinusbølger, r1, r2 og r3 i utgangsvinduet i tidsdomenet. Frekvensdomenesignalet 'PS1' lages ved å bruke FFT-funksjonen til bølgene for å beregne hver av deres individuelle enkeltside-amplitudespektre.

Konklusjon


De FFT er et verdifullt verktøy som hjelper oss å forstå signaler annerledes ved å analysere frekvensinnholdet. Med MATLABs innebygde funksjon, fft, ytelse FFT beregninger på signaler blir praktiske. Denne funksjonen lar oss lære viktige detaljer om de forskjellige frekvensene og de relative intensitetene til disse frekvensene ved å konvertere data fra tidsdomenet til frekvensdomenet. Veiledningen ovenfor er avgjørende for å få en dypere forståelse av signalets egenskaper og ta informerte beslutninger i ulike applikasjoner.