Штук - простой поддельный объект. Это просто гарантирует, что тест проходит гладко. Макет более умный. Вы подтверждаете, что ваш тест проходит через него.
Вот фрагмент кода, который поможет вам понять, как получить частотный спектр, используя fft в matlab
.
Следует помнить следующее:
Вам нужно выбрать частоту дискретизации, которая должна быть достаточно высокой, согласно критерию Найквиста (Вам нужно количество выборок, по крайней мере, более чем в два раза выше самой высокой частоты, иначе у нас будет псевдоним). Это означает, что fs в этом примере не может быть ниже 2 * 110
. Лучше иметь его еще выше, чтобы лучше видеть сигнал.
Для реального сигнала вам нужен спектр мощности, полученный в виде квадрата абсолютного значения выходного сигнала функции fft (). Мнимая часть, которая содержит фазу, не должна содержать ничего, кроме шума. (Я не описывал здесь фазу, но вы можете сделать это, чтобы проверить сами.)
fftshift
для сдвига сигнала таким образом, чтобы мы получили зеркальный спектр вокруг нулевой частоты. 100Hz +- 10Hz
, то есть 90 Гц и 110 Гц. По-видимому, 110Гц - самая высокая частота, в вашем примере.
Код:
fs = 500; % sampling frequency - Should be high enough! Remember Nyquist!
t=[-.2:1/fs:.2];
s= 5.*(1+cos(2*pi*10*t)).*cos(2*pi*100*t);
figure, subplot(311), plot(t,s);
n = length(s);
y=fft(s);
f = (0:n-1)*(fs/n); % frequency range
power = abs(y).^2/n;
subplot(312), plot(f, power);
Y = fftshift(y);
fshift = (-n/2:n/2-1)*(fs/n); % zero-centered frequency range
powershift = abs(Y).^2/n;
subplot(313), plot(fshift, powershift);
Выходные графики: