MATLAB Diagramme temps-fréquence graphique de .fichier wav
Je suis en train de travailler sur un projet qui consiste à examiner les changements de hauteur/fréquence au fil du temps avec un fichier wave (je suis nouveau sur MATLAB, mais pas à la programmation). Je suis en mesure de voir le temps-graphe amplitude et de la fréquence-amplitude (après une FFT) graphique, mais comment pourrais-je être en mesure d'isoler la fréquence et de la montrer à chaque point dans le temps?
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);
Vous dites "comment pourrais-je être en mesure d'isoler la fréquence et de la montrer à chaque point dans le temps?" Il y a quelques bonnes réponses à cela, comme il va, mais il est important de réaliser qu'il n'y a pas une telle chose comme la fréquence instantanée dans le sens que vous souhaitez. En d'autres termes, il n'existe pas de valeur de fréquence unique qui correspond à chaque point dans le temps (ou, au moins, vous ne peut pas dériver que de l'information à partir du moment données du domaine. Si vous pouviez, vous serait violer le principe d'incertitude de Heisenberg).
OriginalL'auteur airplaneman19 | 2013-01-15
Vous devez vous connecter pour publier un commentaire.
Si vous avez la boîte à outils de Traitement du Signal, alors vous pouvez les trouver le
spectrogramme
fonction utile.Si vous ne le faites pas, alors vous pouvez obtenir le même effet manuellement par le calcul de la Fft consécutives (éventuellement superposées) fenêtré segments de votre temps-domaine de données, puis de tracer le amplitudes.
C'est essentiellement le de courte durée à transformée de Fourier (TFCT).
spectrogram
fonction utilise) etc. C'est un sujet amusant!Merci pour votre aide! J'étais à la recherche de quelque chose de plus le long des lignes d'une ligne graphique, mais je pense que peut apprendre à lire spectograms.
Content d'avoir pu aider. Mais ne prenez note de Bjorn commentaire ci-dessus.
OriginalL'auteur Oliver Charlesworth
Si vous avez la boîte à outils de Traitement du Signal, le spectrogramme est le chemin à parcourir (comme Oli Charlesworth mentionné).
Si vous ne l'avez pas, l'MATLAB Central d'échange de Fichier est toujours un bon endroit pour chercher quelque chose qui général.
http://www.mathworks.com/matlabcentral/fileexchange/1553-spectrogram-short-time-ft-log-magnitude
Cela semble être raisonnable et bien travailler la mise en œuvre de la spectrogramme de la fonctionnalité.
OriginalL'auteur Dani Gehtdichnixan