View Full Version : [MATLAB] Trasformata di Fourier
Salve,
ho l'esigenza di calcolare la trasformata di fourier di un vettore che rappresenta i valori di un segnale neurale registrato in 60 secondi.
Questo segnale viene filtrato da un filtro alla buttherworth passabanda 0.1 - 55Hz con frequenza di campionamento fs = 254.31 Hz.
Come fare la trasformata di fourier del segnale filtrato e come visualizzarlo con Matlab ?(ascissa frequenze e ordinata modulo )
Grazie in anticipo
Cait Sith
01-11-2011, 20:00
c'è la funzione fft
se il tuo segnale è x tu fai y=fft(x) e hai la trasformata
l'asse lo devi calcolare così f=fs*(0:N-1)./N, dove N=length(x) e fs è la frequenza di campionamento del segnale
l'asse delle frequenze è tutto positivo e va da 0 a fs (se il segnale è reale ti basta guardare la prima metà dello spettro)
dato che la trasformata è complessa ne puoi visualizzare il modulo o la fase
per visualizzare il modulo basta fare plot(f,abs(y)) se invece lo vuoi in scala logaritmica (dB) fai plot(f,20*log10(abs(y)))
Aggiungo che puo esserti utile anche la funzione fftshift.
c'è la funzione fft
se il tuo segnale è x tu fai y=fft(x) e hai la trasformata
l'asse lo devi calcolare così f=fs*(0:N-1)./N, dove N=length(x) e fs è la frequenza di campionamento del segnale
l'asse delle frequenze è tutto positivo e va da 0 a fs (se il segnale è reale ti basta guardare la prima metà dello spettro)
dato che la trasformata è complessa ne puoi visualizzare il modulo o la fase
per visualizzare il modulo basta fare plot(f,abs(y)) se invece lo vuoi in scala logaritmica (dB) fai plot(f,20*log10(abs(y)))
Grazie! :cincin:
Puoi spiegarmi per favore la differenza tra fft(x) ed fft(x,n) con n = lenght (x)?
Cait Sith
02-11-2011, 22:18
se fai fft(x,n) in pratica è come se aggiungessi n-length(x) zeri alla fine del segnale
ovviamente se n è uguale a length(x) il risultato è identico
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.