Doing a fft on a audio file
42 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentare
Antworten (2)
Bert
am 7 Okt. 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 Kommentare
Mallikarjun Yadawad
am 5 Dez. 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 Kommentare
Siehe auch
Kategorien
Mehr zu Measurements and Spatial Audio finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!