Ce face FFT în MATLAB?

Ce Face Fft In Matlab



The Transformată Fourier rapidă (FFT) se referă la o versiune foarte optimizată a Transformată Fourier discretă (DFT) care transformă semnale discrete prin domeniul timpului în domeniul frecvenței. Conținutul de frecvență, faza și alte aspecte ale semnalului pot fi observate prin intermediul FFT calcule.

Acest articol ne va învăța despre funcționarea FFT în MATLAB.

Înțelegerea FFT

The Transformată Fourier rapidă (FFT) reprezintă o tehnică specială care ne ajută să înțelegem diferit semnalele. În mod normal, semnalele sunt afișate ca șiruri de numere care se modifică în timp, dar cu FFT, putem vedea ce frecvențe diferite sunt prezente în semnal și cât de puternice sunt. Este ca și cum ai descompune un semnal în notele sale muzicale și ai vedea cât de tare este fiecare notă.







The FFT algoritmul face o mulțime de calcule complexe asupra datelor semnalului. Preia semnalul și îl împarte în părți mai mici, apoi calculează frecvențele și puterile lor pentru fiecare parte. În cele din urmă, combină toate rezultatele pentru a ne oferi o imagine a conținutului de frecvență al semnalului, a relațiilor de fază și a altor caracteristici importante.



Această tehnică este folosită în multe domenii deoarece ne ajută să analizăm și să înțelegem mai bine semnalele. De exemplu, în procesare a semnalului , putem folosi FFT pentru a filtra zgomotul nedorit sau a detecta anumite modele. În analiza audio , putem identifica diferite sunete sau putem analiza calitatea unei înregistrări audio. În procesarea imaginii , FFT ne poate ajuta să analizăm frecvențele spațiale din imagine. Și în telecomunicații, FFT este utilizat pentru transmiterea și recepția eficientă a semnalelor.



Cum se utilizează FFT în MATLAB

MATLAB oferă o funcție încorporată numită fft care ne permite să performam Transformată Fourier rapidă (FFT) calcule pe semnale. Această funcție este ușor de utilizat și oferă diverse opțiuni pentru analiza și manipularea semnalelor din domeniul frecvenței:





Sintaxa pentru utilizarea FFT funcțiile din MATLAB sunt prezentate mai jos:

F = fft ( X )

F = fft ( x,n )

F = fft ( x,n,dim )

Aici:



F= fft(x) produce calculul Transformată Fourier discretă (DFT) de x folosind Transformată Fourier rapidă (FFT) algoritm.

  • Dacă x reprezintă un vector, fft(x) produce transformata Fourier a vectorului.
  • Dacă x reprezintă o matrice, fft(x) furnizează transformata Fourier a fiecărei coloane tratând fiecare coloană ca un vector.

F = fft(x,n) produce DFT în n puncte. F are dimensiunea identică cu x atunci când nu este furnizată nicio valoare.

  • Dacă x este un vector și lungimea sa este mai mică decât n, x devine umplut cu zerouri finale până ajunge la n.
  • Dacă x este un vector și lungimea lui depășește n, este trunchiat la acea lungime n.
  • Dacă x este o matrice, fiecare coloană este considerată ca un caz vectorial.

F = fft(x,n,dim) produce transformata Fourier de-a lungul dimensiunii date dim. Sa spunem, fft(x, n, 2) oferă transformata Fourier în n puncte pentru fiecare rând dacă x reprezintă o matrice.

Următoarele exemple ilustrează funcționarea FFT funcție în MATLAB.

Exemplul 1

Putem folosi FFT în MATLAB pentru a demonstra generarea și analiza unui semnal cu componente de frecvență specifice și zgomot aleatoriu.

De exemplu:

ls = 2000 ;

fs = 1500 ;

ts = 1 /fs;

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

f = 0,6 * fără ( 2 * pi * cincizeci *televizor ) + 3 * randn ( mărimea ( televizor ) ) + fără ( 2 * pi * 120 *televizor ) ;

complot ( 1000 *televizor ( 1 : cincizeci ) ,f ( 1 : cincizeci ) )

xlabel ( „tv (ms)” )

ylabel ( „f(tv)” )

titlu ( „Semnal corupt cu zgomot aleator mediu zero” )

F = fft ( f ) ;

PS2 = abs ( F/ ls ) ;

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

PS1 ( 2 :Sfârşit- 1 ) = 2 *PS1 ( 2 :Sfârşit- 1 ) ;

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

complot ( f, PS1 )

titlu ( „Spectru de amplitudine (cu o singură față) PS1 pentru f(t)” )

xlabel ( 'f(Hz)' )

ylabel ( '|PS1(f)|' )

Codul furnizat generează un semnal cu o lungime de 2000 de mostre (l) , o frecvență de eșantionare de 1500 Hz (fs) , și a perioada de eșantionare (ts) . The vector de timp (tv) este creat pe baza acestor parametri. Semnalul f este compus dintr-o combinație de componente sinusoidale la 50 Hz și 120 Hz, împreună cu zgomot aleator cu medie zero. Apoi este reprezentat grafic cu un segment din primele 50 de mostre. Codul calculează în continuare FFT a semnalului și calculează spectru de amplitudine (PS1) . În cele din urmă, spectrul de amplitudine este reprezentat grafic în funcție de frecvențele corespunzătoare (f) în Hz.

Exemplul 2

Iată un alt exemplu care folosește FFT funcția în MATLAB pentru transformarea pulsului gaussian prin domeniul timpului în domeniul frecvenței.

fs = 500 ;

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

ls = lungime ( ts ) ;

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

complot ( ts,f )

xlabel ( „Timp (t)” )

ylabel ( 'f(t)' )

titlu ( 'Domeniul timpului' )

ex. = 2 ^nextpow2 ( ls ) ;

f = fs* ( 0 : ( de exemplu/ 2 ) ) /de exemplu;

F = fft ( f,np ) ;

PF = abs ( F/np ) ;

complot ( f,PF ( 1 :de exemplu/ 2 + 1 ) )

xlabel ( „(f)” )

ylabel ( '|PF(f)|' )

titlu ( 'Domeniul de frecventa' )

Codul furnizat generează un semnal de impuls gaussian în domeniul timp și analizează conținutul de frecvență utilizând Transformată Fourier rapidă (FFT) în MATLAB. Semnalul din domeniul timp este reprezentat grafic, apoi FFT se realizează pentru a obţine reprezentarea domeniului de frecvenţă. Rezultați spectrul de amplitudine este reprezentat grafic în funcție de frecvențele corespunzătoare.

Exemplul 3

Următorul exemplu generează trei semnale sinusoidale cu frecvențe diferite și le trasează în domeniul temporal folosind FFT funcție în MATLAB.

fs = 2500 ;

ts = 1 /fs;

ls = 3000 ;

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

r1 = fără ( 3 * pi * 60 *t ) ;

r2 = fără ( 3 * pi * 140 *t ) ;

r3 = fără ( 3 * pi * 350 *t ) ;

f = [ r1; r2; r3 ] ;

pentru k = 1 : 3

subplot ( 3 , 1 ,k )

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

titlu ( [ „Rând nr” , num2str ( k ) , ' (Domeniul timpului)' ] )

Sfârşit

ex. = 2 ^nextpow2 ( ls ) ;

d = 2 ;

F = fft ( f,np,d ) ;

PS2 = abs ( F/ ls ) ;

PS1 = PS2 ( :, 1 :de exemplu/ 2 + 1 ) ;

PS1 ( :, 2 :Sfârşit- 1 ) = 2 *PS1 ( :, 2 :Sfârşit- 1 ) ;

pentru k= 1 : 3

subplot ( 3 , 1 ,k )

complot ( 0 : ( fs/np ) : ( fs/ 2 -fs/np ) ,PS1 ( k, 1 :de exemplu/ 2 ) )

titlu ( [ „Rândul nr” , num2str ( k ) , '(Domeniul de frecventa)' ] )

Sfârşit

În codul de mai sus, trei unde sinusoidale, r1, r2 și r3 sunt afișate în fereastra de ieșire în domeniul timpului. Semnalul domeniului de frecvență „PS1” este creat prin utilizarea funcției FFT la unde pentru a calcula fiecare dintre spectrele individuale de amplitudine pe o singură parte.

Concluzie


The FFT este un instrument valoros care ne ajută să înțelegem diferit semnalele prin analiza conținutului lor de frecvență. Cu funcția încorporată a MATLAB, fft, performant FFT calculele pe semnale devin convenabile. Această funcție ne permite să învățăm detalii cruciale despre diferitele frecvențe și intensitățile relative ale acelor frecvențe prin conversia datelor din domeniul timpului în domeniul frecvenței. Ghidul de mai sus este crucial pentru a obține o înțelegere mai profundă a caracteristicilor semnalului și pentru a lua decizii informate în diferite aplicații.