Azzera filtri
Azzera filtri

Doing a fft on a audio file

42 visualizzazioni (ultimi 30 giorni)
Jack Walker
Jack Walker il 7 Ott 2016
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))

Risposte (2)

Bert
Bert il 7 Ott 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!

Mallikarjun Yadawad
Mallikarjun Yadawad il 5 Dic 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))

Categorie

Scopri di più su Measurements and Spatial Audio in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by