Zero frequency in audio signal

4 次查看(过去 30 天)
Hello sir,
I am working on a project where one of the task is to find the FFT of an audio file that I have. The audio file basically contain sound from a 'trumpet'. It is of 5s duration.Firstly I use 'audioread' function to read the file which gave me a vector i.e a discrete time samples of audio. Then when I took fft to see the frequency of sound clip, it showed me max peak at 0 Hz. How is it possible? I am not getting it. The code works fine for other sounds.
I will share the code that I am using please tell me where I am going wrong.
[c,fs]=audioread('T4.wav');
c=c';
dft=fft(c);
dft=dft(1:length(c)/2+1);
fval=fs*(0:length(c)/2)/length(c);
[Max,I]=max(abs(dft));
plot(fval,abs(dft))
fprintf('Maximum occurs at %3.2f Hz.\n',fval(I))

采纳的回答

Star Strider
Star Strider 2017-3-3
The ‘0 Hz’ peak is the constant (or d-c, direct current) offset. To eliminate it and see the other frequencies in your signal, subtract the mean from your signal before taking the fft.
Example:
[c,fs]=audioread('T4.wav');
c = c-mean(c);
c=c';
dft=fft(c)
.. REST OF YOUR CODE ...
  6 个评论
Nachiket Patki
Nachiket Patki 2017-3-6
Ok let me try this out. I will ask doubt if I get stuck. Thank you sir.

请先登录,再进行评论。

更多回答(1 个)

标签

Community Treasure Hunt

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

Start Hunting!

Translated by