Extract frequency samples from .wav file

22 views (last 30 days)
Hi,
I'd like to get a list of frequencies from a .wav file, but I don't have any idea how. I've tried to use the function wavread, from which I can get the amplitude values and plot them against the time, but what I want is to get and plot the discrete frequency values of the sound file (as I show in the image I've attached). The code I've used is the following one, and it would be perfect if I could do exactly the same operations but with the frequency values instead of the amplitude ones.
[wave,fs]=wavread('filename.wav');
t=0:1/fs:(length(wave)-1)/fs;
plot(t,wave);
Could anyone here give me a hand? Thanks in advance!

Answers (2)

Azzi Abdelmalek
Azzi Abdelmalek on 21 Jun 2015
stem(abs(fft(wave)))
  1 Comment
FirstName LastName
FirstName LastName on 23 Jun 2015
Well... What I get from plotting the FFT is not exactly the union of all the frequency samples. I attach an image of the result of using this command. I would want to get something similar to the image below the amplitude graphs. The amplitude graph I get by using plot(t,wave) is correct, the problem I have is that I need to get the same but with frequency values. Thanks!

Sign in to comment.


Star Strider
Star Strider on 21 Jun 2015
If you have the Signal Processing Toolbox, use the spectrogram function. That may provide what you want.
  2 Comments
FirstName LastName
FirstName LastName on 24 Jun 2015
Thanks for your answer! I see that with the spectrogram function I can plot a lot of different graphs, but I don't just want to plot the frequency values, I also want to get and access them, that's the problem.
Star Strider
Star Strider on 24 Jun 2015
My pleasure.
You can get data from spectrogram by asking it for outputs. All the data it calculates are available. See the documentation on Spectrogram and Instantaneous Frequency for details.

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!