Why isn't the output of an N point FFT discrete ?
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Chinmay Samudra
el 22 de Ag. de 2017
Editada: David Goodmanson
el 23 de Ag. de 2017
I have written a code that samples and quantizes a cosine function and then finds it's FFT. I have got two questions: 1. Why is the output of the FFT shown as a continuous plot ? 2. The FFT doesn't give the correct frequency of my cosine function. Why ?
N=8
m=16
f=m*fs/(2^N); %Frequency of sinusoid
nCyl=16; %generate sixteen cycles of sinusoid
t=0:1/fs:nCyl*1/f; %time index
x=cos(2*pi*f*t);
ff=fft(x,256);
l=20*log10(ff)
plot((20*log10(abs(ff/256))))
Theoretically this code should produce a graph showing a big peak at 16 but that peak is coming at 17 . Why ?
0 comentarios
Respuesta aceptada
David Goodmanson
el 23 de Ag. de 2017
Editada: David Goodmanson
el 23 de Ag. de 2017
Hi Chinmay,
If by 'isn't discrete' you are referring to the values in between the peaks, they are basically at the numerical limit for double precision. You might prefer plot(20*log10(abs(ff/256)),'o'), or stem(20*log10(abs(ff/256))+300) for the result relative to -300 dB. As for the peak location, an fft output array starts with zero frequency in ff(1), so f=16 is in ff(17).
0 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Fourier Analysis and Filtering en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!