Azzera filtri
Azzera filtri

Why isn't the output of an N point FFT discrete ?

2 visualizzazioni (ultimi 30 giorni)
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 ?

Risposta accettata

David Goodmanson
David Goodmanson il 23 Ago 2017
Modificato: David Goodmanson il 23 Ago 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).

Più risposte (0)

Categorie

Scopri di più su Fourier Analysis and Filtering in Help Center e File Exchange

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by