exponenta event banner

Базовый спектральный анализ

Преобразование Фурье является инструментом для выполнения анализа частоты и спектра мощности сигналов временной области.

Количественные характеристики спектрального анализа

Спектральный анализ изучает частотный спектр, содержащийся в дискретных данных с равномерной выборкой. Преобразование Фурье - это инструмент, который выявляет частотные компоненты сигнала на основе времени или пространства, представляя его в частотном пространстве. В следующей таблице перечислены общие величины, используемые для характеристики и интерпретации свойств сигнала. Дополнительные сведения о преобразовании Фурье см. в разделе Преобразования Фурье.

КоличествоОписание
x

Выборочные данные

n = length(x)

Количество образцов

fs

Частота выборки (выборки в единицу времени или пространства)

dt = 1/fs

Приращение времени или пространства на образец

t = (0:n-1)/fs

Интервал времени или пространства для данных

y = fft(x)

Дискретное преобразование Фурье данных (DFT)

abs(y)

Амплитуда ДПФ

(abs(y).^2)/n

Мощность DFT

fs/n

Приращение частоты

f = (0:n-1)*(fs/n)

Диапазон частот

fs/2

Частота Найквиста (средняя точка частотного диапазона)

Шумный сигнал

Преобразование Фурье может вычислять частотные компоненты сигнала, который поврежден случайным шумом.

Создайте сигнал с компонентными частотами 15 Гц и 40 Гц и введите случайный гауссов шум.

rng('default')
fs = 100;                                % sample frequency (Hz)
t = 0:1/fs:10-1/fs;                      % 10 second span time vector
x = (1.3)*sin(2*pi*15*t) ...             % 15 Hz component
  + (1.7)*sin(2*pi*40*(t-2)) ...         % 40 Hz component
  + 2.5*randn(size(t));                  % Gaussian noise;

Преобразование Фурье сигнала идентифицирует его частотные компоненты. В MATLAB ®, fft функция вычисляет преобразование Фурье с использованием алгоритма быстрого преобразования Фурье. Использовать fft для вычисления дискретного преобразования Фурье сигнала.

y = fft(x);

Постройте график спектра мощности как функции частоты. В то время как шум маскирует частотные компоненты сигнала во временном пространстве, преобразование Фурье обнаруживает их как пики мощности.

n = length(x);          % number of samples
f = (0:n-1)*(fs/n);     % frequency range
power = abs(y).^2/n;    % power of the DFT

plot(f,power)
xlabel('Frequency')
ylabel('Power')

Figure contains an axes. The axes contains an object of type line.

Во многих применениях удобнее просматривать спектр мощности, центрированный на частоте 0, поскольку он лучше представляет периодичность сигнала. Используйте fftshift для выполнения кругового сдвига на yи постройте график 0-центрированной мощности.

y0 = fftshift(y);         % shift y values
f0 = (-n/2:n/2-1)*(fs/n); % 0-centered frequency range
power0 = abs(y0).^2/n;    % 0-centered power

plot(f0,power0)
xlabel('Frequency')
ylabel('Power')

Figure contains an axes. The axes contains an object of type line.

Звуковой сигнал

Преобразование Фурье можно использовать для анализа частотного спектра аудиоданных.

Файл bluewhale.au содержит аудиоданные с вокализации тихоокеанского синего кита, записанной подводными микрофонами у берегов Калифорнии. Файл из библиотеки вокализаций животных, поддерживаемой Программой исследований биоакустики Корнеллского университета.

Потому что синие киты так низки, что они едва слышны для людей. Шкала времени в данных сжимается в 10 раз для повышения основного тона и обеспечения более четкого слышимости вызова. Прочтите и постройте график аудиоданных. Можно использовать команду sound(x,fs) для прослушивания звука.

whaleFile = 'bluewhale.au';
[x,fs] = audioread(whaleFile);

plot(x)
xlabel('Sample Number')
ylabel('Amplitude')

Figure contains an axes. The axes contains an object of type line.

Первый звук - «трель» с тремя «стонами». В этом примере анализируется одиночный стон. Укажите новые данные, которые примерно состоят из первого стона, и скорректируйте временные данные для учета ускорения с коэффициентом 10. Постройте график усеченного сигнала как функции времени.

moan = x(2.45e4:3.10e4);
t = 10*(0:1/fs:(length(moan)-1)/fs);

plot(t,moan)
xlabel('Time (seconds)')
ylabel('Amplitude')
xlim([0 t(end)])

Figure contains an axes. The axes contains an object of type line.

Преобразование Фурье данных идентифицирует частотные компоненты звукового сигнала. В некоторых приложениях, обрабатывающих большие объемы данных с помощью fft, как правило, изменение размера входного сигнала таким образом, чтобы число выборок составляло степень 2. Это может значительно ускорить вычисление преобразования, особенно для размеров выборки с большими простыми коэффициентами. Укажите новую длину сигнала n это сила 2, и используйте fft для вычисления дискретного преобразования Фурье сигнала. fft автоматически помещает исходные данные с нулями для увеличения размера выборки.

m = length(moan);       % original sample length
n = pow2(nextpow2(m));  % transform length
y = fft(moan,n);        % DFT of signal

Отрегулируйте частотный диапазон с учетом коэффициента ускорения, вычислите и постройте график спектра мощности сигнала. Сюжет указывает на то, что стон состоит из фундаментальной частоты около 17 Гц и последовательности гармоник, где подчёркивается вторая гармоника.

f = (0:n-1)*(fs/n)/10;
power = abs(y).^2/n;      

plot(f(1:floor(n/2)),power(1:floor(n/2)))
xlabel('Frequency')
ylabel('Power')

Figure contains an axes. The axes contains an object of type line.

См. также

| | | | |

Связанные темы