2013-01-15 17 views
5

Sto lavorando a un progetto che consiste nel guardare le variazioni di tono/frequenza nel tempo con un file wave (sono nuovo in MATLAB, ma non in programmazione) . Sono in grado di vedere il grafico dell'ampiezza del tempo e l'ampiezza della frequenza (dopo un grafico FFT), ma come potrei essere in grado di isolare la frequenza e mostrarla in ogni momento?MATLAB - Grafico grafico della frequenza temporale del file .wav

Codice:

filename = '/Users/Username/Sample_1.wav' 

[y, fs] = wavread(filename); 
y = y(:,1); 
dt = 1/fs; 
t = 0:dt:(length(y)*dt)-dt; 
plot(t,y); xlabel('Seconds'); ylabel('Amplitude'); 

transformed = fft(y); 
mag = abs(transformed); 
plot(mag); 
+2

Hai detto "come potrei isolare la frequenza e mostrarla in ogni momento?" Ci sono alcune buone risposte a questo, per quanto va, ma è importante rendersi conto che non esiste una cosa come la frequenza istantanea nel senso che vuoi. In altre parole, non esiste un valore di frequenza che corrisponda in modo univoco a ciascun punto nel tempo (o, almeno, non è possibile ricavare tali informazioni dai dati del dominio del tempo. Se fosse possibile, violerebbe il principio di indeterminazione di Heisenberg) . –

risposta

7

Se avete la Signal Processing Toolbox, allora si può trovare la funzione spectrogram utile.

Se non lo fai, allora si può ottenere lo stesso effetto manualmente calcolando FFT di consecutivi (possibilmente sovrapposte) segmenti finestrati dei dati nel dominio del tempo, e poi tracciare le ampiezze.

Questo è essenzialmente lo short-time Fourier transform (STFT).

+0

Per aggiungere ... ciò che (l'OP) sta tentando di fare rientra nell'area Analisi tempo-frequenza. Se sei interessato, ci sono molti articoli scritti sull'uso di tecniche come la Trasformata di Fourier a Breve Termine (che cosa usa la funzione MATLAB 'spettrogramma') ecc. È un argomento divertente! – notthetup

+0

Grazie per il tuo aiuto! In realtà stavo cercando qualcosa di più sulla falsariga di un grafico a linee, ma penso che possa imparare a leggere gli spettogrammi. – airplaneman19

+0

@ airplaneman19: Felice di poterti aiutare. Ma prendi nota del commento di Bjorn sopra. –