Ich arbeite an einem Projekt, bei dem ich die Änderungen der Tonhöhe/Frequenz im Zeitverlauf mit einer Wave-Datei betrachte (ich bin neu in MATLAB, aber nicht zur Programmierung) . Ich kann die Zeit-Amplituden-Kurve und die Frequenz-Amplitude-Kurve (nach einer FFT-Kurve) sehen, aber wie könnte ich die Frequenz isolieren und zu jedem Zeitpunkt anzeigen?MATLAB - Zeit-Frequenz-Diagramm der .wav-Datei
Code:
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);
Sie sagen "Wie könnte ich die Frequenz isolieren und zu jedem Zeitpunkt anzeigen?" Es gibt einige gute Antworten darauf, soweit es geht, aber es ist wichtig zu erkennen, dass es keine momentane Frequenz in dem Sinne gibt, wie du es willst. Mit anderen Worten, es gibt keinen Häufigkeitswert, der jedem Zeitpunkt einmalig entspricht (oder zumindest können Sie diese Information nicht aus den Zeitbereichsdaten ableiten. Wenn Sie könnten, würden Sie die Heisenberg-Unschärferelation verletzen) . –