How to correctly make FFT of sound set?
Show older comments
During 7 sec 7 tones plays with frequences (all in Hz), one tone -- one sec. Code:
Fs=44100;f=[261.63 293.67 329.63 349.23 392.00 440 493.88];
duration=7;octava=2;f=f/octava;Df=duration*Fs;FF=2*pi/Fs*f;
len = length(f);tau=Df/len;
n=1:Df;y=zeros(1,Df);
for i = 1:len
amplitude=(n>(i-1)*tau)&(n<i*tau);
y = y + sin(FF(i)*n).*amplitude;
end
soundsc(y, Fs);
This question rather for mathematicians. Now I have to see Fourier tranformation. Perhaps it will not accurate vertical Dirac bars but what?
Code:
Y1=fft(y);plot(abs(Y1))
Two bar on edges? How to make beauty picture? And what frequencies will be?
Accepted Answer
More Answers (2)
Daniel Shub
on 15 Jun 2011
0 votes
The fft assumes that the signal is cyclical. You need to match up your edges (or zero pad) to get delta functions. The fft also returns both positive and negative frequencies. I would read the documentation about fft and fftshift.
Rick Rosson
on 16 Jun 2011
Please try the following:
dt = 1/Fs;
len = duration*Fs;
n = dt*(0:len-1);
Df = Fs/len;
f = -Fs/2:Df:Fs/2-Df;
Also:
Y1 = fftshift(fft(y));
plot(abs(Y1));
HTH.
Categories
Find more on Spectral Measurements 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!