Què fa FFT a MATLAB?

Que Fa Fft A Matlab



El Transformada ràpida de Fourier (FFT) es refereix a una versió altament optimitzada del Transformada de Fourier discreta (DFT) que transforma senyals discrets a través del domini del temps al domini de la freqüència. El contingut de freqüència, la fase i altres aspectes del senyal es poden observar mitjançant FFT càlculs.

Aquest article ens ensenyarà el funcionament FFT en MATLAB.

Comprensió de FFT

El Transformada ràpida de Fourier (FFT) representa una tècnica especial que ens ajuda a entendre els senyals de manera diferent. Normalment, els senyals es mostren com a seqüències de nombres que canvien amb el temps, però amb FFT, podem veure quines diferents freqüències hi ha presents en el senyal i la seva intensitat. És com descompondre un senyal en les seves notes musicals i veure el volum de cada nota.







El FFT L'algoritme fa moltes matemàtiques complexes sobre les dades del senyal. Pren el senyal i el divideix en parts més petites, després calcula les freqüències i les seves intensitats per a cada part. Finalment, combina tots els resultats per donar-nos una imatge del contingut de freqüència del senyal, les relacions de fase i altres característiques importants.



Aquesta tècnica s'utilitza en molts camps perquè ens ajuda a analitzar i entendre millor els senyals. Per exemple, en processament del senyal , podem utilitzar FFT per filtrar el soroll no desitjat o detectar patrons específics. En anàlisi d'àudio , podem identificar diferents sons o analitzar la qualitat d'una gravació d'àudio. En processament d'imatge , FFT ens pot ajudar a analitzar les freqüències espacials de la imatge. I en telecomunicacions, FFT s'utilitza per transmetre i rebre senyals de manera eficaç.



Com utilitzar FFT a MATLAB

MATLAB proporciona una funció integrada anomenada ft que ens permet actuar Transformada ràpida de Fourier (FFT) càlculs sobre senyals. Aquesta funció és fàcil d'utilitzar i ofereix diverses opcions per analitzar i manipular senyals en el domini de la freqüència:





La sintaxi per utilitzar el FFT Les funcions a MATLAB es detallen a continuació:

F = ft ( x )

F = ft ( x,n )

F = ft ( x,n,dim )

Aquí:



F= fft(x) dóna el càlcul de la Transformada de Fourier discreta (DFT) de x utilitzant el Transformada ràpida de Fourier (FFT) algorisme.

  • Si x representa un vector, fft(x) dóna la transformada de Fourier del vector.
  • Si x representa una matriu, fft(x) proporciona la transformada de Fourier de cada columna tractant cada columna com un vector.

F = fft(x,n) produeix DFT de n punts. F té la mateixa mida que x quan no es proporciona cap valor.

  • Si x és un vector i la seva longitud és menor que n, x obté un farciment amb zeros finals fins que arriba a n.
  • Si x és un vector i la seva longitud supera n, es trunca a aquesta longitud n.
  • Si x és una matriu, cada columna es considera un cas vectorial.

F = fft(x,n,dim) produeix la transformada de Fourier al llarg de la dimensió donada dim. Diguem, fft(x, n, 2) dóna la transformada de Fourier de n punts per a cada fila si x representa una matriu.

Els exemples següents il·lustren el funcionament de FFT funció a MATLAB.

Exemple 1

Podem utilitzar FFT a MATLAB per demostrar la generació i anàlisi d'un senyal amb components de freqüència específics i soroll aleatori.

Per exemple:

ls = 2000 ;

fs = 1500 ;

ts = 1 /fs;

televisió = ( 0 :ls- 1 ) *ts;

f = 0.6 * sense ( 2 * Pi * 50 *televisió ) + 3 * randn ( mida ( televisió ) ) + sense ( 2 * Pi * 120 *televisió ) ;

parcel · la ( 1000 *televisió ( 1 : 50 ) ,f ( 1 : 50 ) )

xlabel ( 'televisió (ms)' )

yetiqueta ( 'f(tv)' )

títol ( 'El senyal corrupte que té un soroll aleatori mitjà zero' )

F = ft ( f ) ;

PS2 = abs ( F/ ls ) ;

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

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

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

parcel · la ( f, PS1 )

títol ( 'Espectre d'amplitud (d'una sola cara) PS1 per a f(t)' )

xlabel ( 'f(Hz)' )

yetiqueta ( '|PS1(f)|' )

El codi proporcionat genera un senyal amb una longitud de 2000 mostres (l) , una freqüència de mostreig de 1500 Hz (fs) , i a període de mostreig (ts) . El vector de temps (tv) es crea a partir d'aquests paràmetres. El senyal f està compost per una combinació de components sinusoïdals a 50 Hz i 120 Hz, juntament amb un soroll aleatori de mitjana zero. A continuació, es dibuixa amb un segment de les primeres 50 mostres. El codi calcula a més el FFT del senyal i calcula el espectre d'amplitud (PS1) . Finalment, l'espectre d'amplitud es representa en funció de les freqüències corresponents (f) en Hz.

Exemple 2

Aquí teniu un altre exemple que utilitza el FFT funció a MATLAB per a la transformació del pols gaussià a través del domini del temps al domini de la freqüència.

fs = 500 ;

ts = - 0.5 : 1 /fs: 0.5 ;

ls = llargada ( ts ) ;

f = 1 / ( 4 * quadrada ( 2 * Pi * 0.02 ) ) * ( exp ( -ts.^ 2 / ( 2 * 0.02 ) ) ) ;

parcel · la ( ts, f )

xlabel ( 'Hora (t)' )

yetiqueta ( 'f(t)' )

títol ( 'Domini del temps' )

ex. = 2 ^nextpow2 ( ls ) ;

f = fs* ( 0 : ( per exemple/ 2 ) ) /per exemple;

F = ft ( f,np ) ;

PF = abs ( F/np ) ;

parcel · la ( f, PF ( 1 :per exemple/ 2 + 1 ) )

xlabel ( '(f)' )

yetiqueta ( '|PF(f)|' )

títol ( 'Domini de freqüència' )

El codi proporcionat genera un senyal de pols gaussià en el domini del temps i analitza el seu contingut de freqüència utilitzant el Transformada ràpida de Fourier (FFT) en MATLAB. Es representa el senyal del domini temporal i després el FFT es realitza per obtenir la representació del domini freqüencial. El resultant espectre d'amplitud es representa en funció de les freqüències corresponents.

Exemple 3

L'exemple següent genera tres senyals sinusoïdals amb freqüències diferents i els representa en el domini del temps mitjançant el FFT funció a MATLAB.

fs = 2500 ;

ts = 1 /fs;

ls = 3000 ;

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

r1 = sense ( 3 * Pi * 60 *t ) ;

r2 = sense ( 3 * Pi * 140 *t ) ;

r3 = sense ( 3 * Pi * 350 *t ) ;

f = [ r1; r2; r3 ] ;

per k = 1 : 3

subtrama ( 3 , 1 ,k )

parcel · la ( t ( 1 : 250 ) ,f ( k, 1 : 250 ) )

títol ( [ 'Fila no' , num2str ( k ) , '(Domini del temps)' ] )

final

ex. = 2 ^nextpow2 ( ls ) ;

d = 2 ;

F = ft ( f, np, d ) ;

PS2 = abs ( F/ ls ) ;

PS1 = PS2 ( :, 1 :per exemple/ 2 + 1 ) ;

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

per k= 1 : 3

subtrama ( 3 , 1 ,k )

parcel · la ( 0 : ( fs/np ) : ( fs/ 2 -fs/np ) , PS1 ( k, 1 :per exemple/ 2 ) )

títol ( [ 'Fila no' , num2str ( k ) , '(Domini de freqüència)' ] )

final

Al codi anterior, es mostren tres ones sinusoïdals, r1, r2 i r3 a la finestra de sortida en el domini del temps. El senyal de domini de freqüència 'PS1' es crea utilitzant la funció FFT a les ones per calcular cadascun dels seus espectres d'amplitud individuals d'un sol costat.

Conclusió


El FFT és una eina valuosa que ens ajuda a entendre els senyals de manera diferent mitjançant l'anàlisi del seu contingut de freqüència. Amb la funció integrada de MATLAB, fft, funcionant FFT els càlculs sobre senyals esdevenen convenients. Aquesta funció ens permet conèixer detalls crucials sobre les diferents freqüències i les intensitats relatives d'aquestes freqüències mitjançant la conversió de dades del domini del temps al domini de la freqüència. La guia anterior és crucial per obtenir una comprensió més profunda de les característiques del senyal i prendre decisions informades en diferents aplicacions.