БПФ для спектрального анализа

Этот пример показывает использование функции БПФ для спектрального анализа. Общее использование БПФ должно найти частотные составляющие сигнала проложенными под землей в шумном сигнале области времени.

Сначала создайте некоторые данные. Считайте данные выбранными на уровне 1 000 Гц. Запустите путем формирования оси времени для наших данных, выполнения от t=0 до t =. 25 на шагах 1 миллисекунды. Затем сформируйте сигнал, x, содержа синусоиды на уровне 50 Гц и 120 Гц.

t = 0:.001:.25;
x = sin(2*pi*50*t) + sin(2*pi*120*t);

Добавьте некоторый случайный шум со стандартным отклонением 2, чтобы произвести сигнал с шумом y. Смотрите на этот сигнал с шумом y путем графического вывода его.

y = x + 2*randn(size(t));
plot(y(1:50))
title('Noisy time domain signal')

Безусловно, трудно идентифицировать частотные составляющие от рассмотрения этого сигнала; вот почему спектральный анализ так популярен.

При нахождении дискретного преобразования Фурье сигнала с шумом y легок; только возьмите быстрое преобразование Фурье (FFT).

Y = fft(y,251);

Вычислите степень спектральная плотность, измерение энергии на различных частотах, с помощью сопряженного комплексного числа (CONJ). Сформируйте ось частоты для первых 127 точек и используйте ее, чтобы построить результат. (Остаток от точек симметричен.)

Pyy = Y.*conj(Y)/251;
f = 1000/251*(0:127);
plot(f,Pyy(1:128))
title('Power spectral density')
xlabel('Frequency (Hz)')

Увеличьте масштаб и постройте только до 200 Гц. Заметьте peaks на уровне 50 Гц и 120 Гц. Это частоты исходного сигнала.

plot(f(1:50),Pyy(1:50))
title('Power spectral density')
xlabel('Frequency (Hz)')