Doing a fft on a audio file
83 views (last 30 days)
Show older comments
Hello, dear community! Really would appreciate a solution to my problem. i want to do a fft on a audio file, which duration last about 10 seconds. My goal is to make a fft on each seconds (1-10) and make it visible in a frequency- and time domain. So i can see, what happened in the last seconds and see the changes. Concerning the audio file, I used the program audacity, in which i took a song and cut out 10 seconds. Btw i am more or less a newbie on matlab programming, because i still lack the experiences. (i am only 16)
Here my code
Pretty sure, i need to do more, but i don't know how to go on. The code provided here, is only my structure, which i want to extend.
%Matlab-Programming
[y,fs]=wavread('UnchainMyHeart');
%wavread = reads WAV-file
%y = samples
%fs = sampling frequency
%'UnchainMyHeart' = WAV-file
t=linspace(0,length(y)/fs,length(y));
%linspace = creating time vector
%0= start time
%length(y)/fs = end time
%length(y) = number of samples in y
plot(t,y)
Nfft=1024;
%Nfft = length of fft
f=linspace(0,fs,Nfft);
%f =creating frequency vector
%0 = start time
%fs = End time
%Nfft = Length of the frequency vector
X=abs(fft(y,Nfft));
%G = the fft of the samples y in 1024 points
figure ; plot(f(1:Nfft/2),X(1:Nfft/2))
0 Comments
Answers (2)
Bert
on 7 Oct 2016
Hi,
you should have a look at the function "spectrogram" ( https://nl.mathworks.com/help/signal/ref/spectrogram.html ), which does exactly what you're trying to implement.
good luck!
0 Comments
Mallikarjun Yadawad
on 5 Dec 2023
%Matlab-Programming
[y,fs]=wavread('UnchainMyHeart');
%wavread = reads WAV-file
%y = samples
%fs = sampling frequency
%'UnchainMyHeart' = WAV-file
t=linspace(0,length(y)/fs,length(y));
%linspace = creating time vector
%0= start time
%length(y)/fs = end time
%length(y) = number of samples in y
plot(t,y)
Nfft=1024;
%Nfft = length of fft
f=linspace(0,fs,Nfft);
%f =creating frequency vector
%0 = start time
%fs = End time
%Nfft = Length of the frequency vector
X=abs(fft(y,Nfft));
%G = the fft of the samples y in 1024 points
figure ; plot(f(1:Nfft/2),X(1:Nfft/2))
0 Comments
See Also
Categories
Find more on Fourier Analysis and Filtering 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!