MATLAB FFT ограничивает x-оси искажается и fftshift

Это первый раз, когда я использую функцию fft и пытаюсь построить частотный спектр простой функции косинуса:

f = cos(2* pi*300*t)

Частота дискретизации 220500. Я рисую одну секунду функции f.

Вот моя попытка:

time = 1;
freq = 220500;
t = 0 : 1/freq : 1 - 1/freq;
N = length(t);
df = freq/(N*time);

F = fftshift(fft(cos(2*pi*300*t))/N);
faxis = -N/2 / time : df : (N/2-1) / time;

plot(faxis, real(F));
grid on;
xlim([-500, 500]);

Почему я получаю странные результаты, когда я увеличиваю частоту до 900 Гц? Эти странные результаты можно исправить, увеличив пределы по оси x, скажем, с 500 Гц до 1000 Гц. Кроме того, это правильный подход? Я заметил, что многие другие люди не использовали fftshift(X)(но я думаю, что они проводили только односторонний спектральный анализ).

Спасибо.

9
задан Jean-Luc 14 March 2012 в 02:02
поделиться