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);
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) . –