How to get dominant frequency of mp3 / wav file?
5 views (last 30 days)
Show older comments
Hello Seniors I want to plot dominant frequency for my wav file. I have a demo code for dominant frequency but I dont know how to get dominant frequency of wav file.
[Y,fs]=audioread('filename.wav);
Code is
Fs=1000;%sampling frequency 1 khz
t=0: 1/fs: 0.296;%time scale
f=200; %HZ, embedded dominant frequency
x=cos (2*pi*f*t)+ randn (size(t));% time series
Plot (t,x), axis ('tight'), grid('on') , title ('Time Series '),figure
nfft=512;% next larger power of 2
y=fft (x,nfft);% fast fourier transform
y= abs(y.^2); % raw power spectrum density
y=y(1:1+nfft/2);% half-spectrum
[v,k] = max (y);% find maximum
f_scale = (0:nfft/2)* fs /nfft;% frequency scale
Plot(f_scale,y),axis('tight'),grid ('on'),title ('Dominant frequency)
f_est=f_scale(k); % dominant frequency estimates
f hz, estimated
fprintf('Dominant freq.: true%f HZ, estimated % f HZ \ n', f, f_est)
fprintf (' Frequency step (resolution) =% f HZ\n', f_scale(2))
3 Comments
Jan
on 5 Apr 2019
Edited: Jan
on 5 Apr 2019
The posted code does not run for several reasons:
Fs=1000;%sampling frequency 1 khz
t=0: 1/fs: 0.296;%
You define Fs and use fs. Matlab is case-sensitive. Same for Plot (t,x).
Do you really want to create the diagram at first and the figure afterwards?
Plot (t,x), axis ('tight'), grid('on') , title ('Time Series '),figure
Add a trailing quote in:
title ('Dominant frequency)
I assume, if your code runs, it will determine the dominant frequency. So all you have to do is to use the loaded Y instead of the created x.
Answers (0)
See Also
Categories
Find more on Live Scripts and Functions in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!