Понимание примера Matlab FFT

Я новичок в Matlab и FFT и хочу понять пример Matlab FFT. На данный момент у меня есть два основных вопроса:

1) Почему ось x (частота) заканчивается на 500? Откуда мне знать, что частот больше нет или они просто игнорируются?

2) Как узнать, что частоты находятся в диапазоне от 0 до 500? Разве БПФ не должен сказать мне, в каких пределах находятся частоты? Возвращает ли БПФ только значение амплитуды без частоты?

Спасибо за любую подсказку!


Рассматриваемый пример:

Рассмотрим данные, полученные с частотой 1000 Гц. Сформируйте сигнал, содержащий синусоиду 50 Гц с амплитудой 0,7 и синусоиду 120 Гц с амплитудой 1, и исказите ее некоторым случайным шумом с нулевым средним значением:

Fs = 1000;                    % Sampling frequency
T = 1/Fs;                     % Sample time
L = 1000;                     % Length of signal
t = (0:L-1)*T;                % Time vector
% Sum of a 50 Hz sinusoid and a 120 Hz sinusoid
x = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t); 
y = x + 2*randn(size(t));     % Sinusoids plus noise
plot(Fs*t(1:50),y(1:50))
title('Signal Corrupted with Zero-Mean Random Noise')
xlabel('time (milliseconds)')

time domain

Преобразуя в частотную область, дискретное преобразование Фурье зашумленного сигнала y находится выполнение быстрого преобразования Фурье (БПФ):

NFFT = 2^nextpow2(L); % Next power of 2 from length of y
Y = fft(y,NFFT)/L;
f = Fs/2*linspace(0,1,NFFT/2+1);

% Plot single-sided amplitude spectrum.
plot(f,2*abs(Y(1:NFFT/2+1))) 
title('Single-Sided Amplitude Spectrum of y(t)')
xlabel('Frequency (Hz)')
ylabel('|Y(f)|')

frequency domain

46
задан stefan.at.wpf 19 June 2012 в 13:18
поделиться